Sending transactions from cold wallets


Also, I would go so far as donate towards a bounty to have this feature as soon as possible!!! I cringe knowing I have to use keys on an online computer!!

If this could be implemented by or soon after launch, I could create, and only ever use my keys on an air gapped computer and still be able to transact all I like with out putting keys anywhere near the internet... Please God implement this feature! :D


Considering all the things we still need to do, how many average users do you think have and are willing to use an "air-gapped" computer? I also think this is doable TODAY by writing a few scripts that interact with NIS directly (obviously, it is not exposed via NCC right now).

@averagejoe: in this case "date received" from the view of the blockchain is when it was included into the blockchain.
Which leads to confusion as there are two timestamps: one when the txs was sent and one when it into the blockchain. In the above situation with the time deadline, is the txs valid? It shows that it was sent on time but didn't get included into the blockchain until a later time, everyone will have a different opinion on the matter and personally I feel this will lead to confusion.

I think it is safe to say that we don't and won't see eye-to-eye on this and therefore this will be my last post on the subject. You are the dev so naturally you will have the last say, hopefully it won't come back to bite NEM in the ass.


Also, I would go so far as donate towards a bounty to have this feature as soon as possible!!! I cringe knowing I have to use keys on an online computer!!

If this could be implemented by or soon after launch, I could create, and only ever use my keys on an air gapped computer and still be able to transact all I like with out putting keys anywhere near the internet... Please God implement this feature! :D


Considering all the things we still need to do, how many average users do you think have and are willing to use an "air-gapped" computer? I also think this is doable TODAY by writing a few scripts that interact with NIS directly (obviously, it is not exposed via NCC right now).

A lot of people have a spare laptop. Or they could just run a live OS on a USB drive. I think its less work than walking to the bank to your lock box.

But anyway, I just think it is good PR to have multisignature at launch and a little later the possibility to send funds from a cold wallet without converting the cold wallet into a hot wallet. No excuses for exchanges left AT ALL.

@averagejoe: Im not sure if I understood it right, but where is the problem? In fact with NEM we have both timestamps, right?


    [li]The timestamp when the user created the transaction (maybe that one was manipulated by the user) -> you find this one in the transaction itself[/li]
    [li]The timestamp when the transaction was "received" = included in a block (thas can not be manipulated) -> you find this in the block (timestamp when block was created)[/li]





Also, I would go so far as donate towards a bounty to have this feature as soon as possible!!! I cringe knowing I have to use keys on an online computer!!

If this could be implemented by or soon after launch, I could create, and only ever use my keys on an air gapped computer and still be able to transact all I like with out putting keys anywhere near the internet… Please God implement this feature! :smiley:


Considering all the things we still need to do, how many average users do you think have and are willing to use an "air-gapped" computer? I also think this is doable TODAY by writing a few scripts that interact with NIS directly (obviously, it is not exposed via NCC right now).


Doesn't need to be air gapped… Bootable Usb is enough… :slight_smile:


For all I care let's say the court looks at the post office stamp. That is an external authority too.
The point is that the court will not look at the date you supplied.
Let's take a look at this example:

First the court:

I have to submit a document to the court by Thursday the 12th. I fill out the document on Wednesday the 11th and sign it for the same day. On Friday the 13th I remember that I didn't get the document to the court so I hurry down there. The court clerk stamps the document as received on the 13th. The judge gets it and sees it was received on Friday the 13th a day after it was due. The judge rejects it.

Now NEM:

I have to submit a payment by 2:00pm, at 2:20pm I remember that I didn't send it. I set my system time back 30 mins and send the payment. The txs gets a timestamp of 1:50pm and enters the NEM network. The NEM network doesn't stamp it when it enters the system. The person receives the txs and sees the timestamp of 1:50pm. Is it a valid txs?

You state "The point is that the court will not look at the date you supplied" which is correct, it looks at when it was received into the system.

NEM doesn't look at when it is received into the system, it takes the time you supplied.


So I work at a company and every Friday I leave at 2:01pm. Therefore I tell everyone payments are only valid if received before 2:00pm.  If there are no new incoming transactions by 2:00pm, I turn off my computer and leave to go play golf. Any new sales that come in to my wallet after 2:00pm will just have to wait until Monday to get processed. 

The thing in business is that I don't care when a person said they sent the money, I only care about when I get it and I'm definitely not moving forward with a deal until that money is in my wallet.

That is your opinion. I think it is a big gain to offer a safe way to do transactions from cold/paper wallets. Just like having multignature accounts since launch, this is a big plus for NEM in my opinion.


Yes that's my opinion. Did I say anything else ?

It might be a big gain for those that use it which will be 1 to 5 people IN MY OPINION. I wouldn't put such niche features high on the priority list.
Of course if you guys find someone to build this into NCC it would be really great. Maybe that person would then keep contributing. That's the reason NCC was open-sourced early on anyway.

Our goal should be to make all nem stakeholders use that feature and not say "1 to 5 people" will use that (which is wrong for sure, but of course I get your point).


Our goal should be to make all nem stakeholders use that feature and not say "1 to 5 people" will use that (which is wrong for sure, but of course I get your point).


Why would we ever [u]make[/u] anyone use that ? I'm borderline paranoide but I would never use that feature. Why would I let something that is supposed to make my life easier make my life harder ?
Just like "secure harvesting" would suggest normal harvesting isn't secure, this would suggest NEM isn't secure unless you go through these hoops. No ? (And in both cases it's not 100% false but that's another discussion for another thread)

"Why would we ever make anyone use that?"
Because there is no safer way to manage an account.

And I think, if this feature is implemented in the GUI, it is not very complicated to use it.

If you are "borderline paranoide", please explain me a way to have similar security.

in 0.6.25 there is magical tool called nem-console - for the brave ones

sounds interesting. any documenation on this?


in 0.6.25 there is magical tool called nem-console - for the brave ones


[img width=320 height=215]http://replygif.net/thumbnail/931.gif[/img]


in 0.6.25 there is magical tool called nem-console - for the brave ones


[img width=320 height=215]http://replygif.net/thumbnail/931.gif[/img]


as I've said, it's for the brave ones...

watch out what you're doing, this is very experimental tool, and very fragile...
you MIGHT loose some xem in the process,

every  other command starts with following command
[code]
// very brief help
java -cp ".;./*;../libs/*" org.nem.console.Main
[/code]

[code]
// generate some cold accounts, save them into wallet protected
// with pass "superSecret"
....  generate -output cold.dat -pass superSecret -prefixes NAXA,NCYC

> 'NAXA' -> 'NAXAI5MFHCAHM6UBY2C7ATKULEA2EETZI5U57ZXA'
> 'NCYC' -> 'NCYC2B4JVU5QMJF36KDBCE6STZINI4JHFC6WKCK5'
> Writing encrypted data to: cold.dat
[/code]
(suggested to make copy of this file...)

[code]
// show the keys, you can
.... dump -input cold.dat -pass superSecret

> Reading encrypted data from: cold.dat
> [NAXA]
>  address: NAXAI5MFHCAHM6UBY2C7ATKULEA2EETZI5U57ZXA
>    public: 376e407fab0545005726a97f234523009c5fed1215f0589cc6cb0a71bd6d99cf
> [NCYC]
>  address: NCYC2B4JVU5QMJF36KDBCE6STZINI4JHFC6WKCK5
>    public: 1833c6f515e20e80655e1d5cb2507d30fcab7922a9fd3796e536a681988de40a
[/code]


Before we'll be able to make any fund, you need to know current network time,
you can check it by visiting some NIS node: http://localhost:7890/time-sync/network-time
It will return something like: [tt]{"sendTimeStamp":385748516,"receiveTimeStamp":385748516}[/tt]

You must divide the value by 1000 so I'm gonna use 385748

[code]
// generate binary file, that contains transaction data
// send 1 NEM to NAMESUOZPJI7F6WDMQ35QTGR2O7IQLHHCMKCS6AP
// this is a single line OFC
.... transfer -input cold.dat -pass superSecret -sender NAXA -recipient NAMESUOZPJI7F6WDMQ35QTGR2O7IQLHHCMKCS6AP
-amount 1000000 -time 385748 -output transaction.bin

> Reading encrypted data from: cold.dat
> transfer (1000000) 'NAXAI5MFHCAHM6UBY2C7ATKULEA2EETZI5U57ZXA' -> 'NAMESUOZPJI7F6WDMQ35QTGR2O7IQLHHCMKCS6AP'
> Writing transaction data to: transaction.bin
> Created transaction:
>      type: 257
>  version: 1744830465
>    sender: NAXAI5MFHCAHM6UBY2C7ATKULEA2EETZI5U57ZXA
>      fee: 9000000
[/code]

Now you need to propagate your transaction over the network, example using curl
[code]
// this is a single line OFC
curl.exe --request POST --data-binary @transaction.bin --header "Content-Type: application/binary"
http://somenisnode:7890/transaction/announce

> {"innerTransactionHash":{},"code":5,"type":1,"message":"FAILURE_INSUFFICIENT_BALANCE",
>  "transactionHash": {"data":"c4d3216d7508caa8167ca60b92344098c62dcbdf328ea0735efdc6df20753437"}}
[/code]

In this case account was empty, but if everything went ok, curl should respond with SUCCESS.

NXT has this functionality?
In advanced parameters have an option Referenced Transaction Hash<br />[&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]<br />[ ] Do Not Broadcast

If not for this topic i would ever know that it used  ::slight_smile:
NEM is much less complicated than NXT.