Wie erstellt man eine Offline-Transaktion?
1 Antworten
- Stimmen
-
- 2019-01-30
Allein den Tezosenthaltenen Transaktionenmüssenin den letzten 60 Block-Hasheseinen Blockhash aufweisen. Dies wirktneben dem Konsens als zusätzliche Schicht der Notarisierung der Kette,aberesbedeutet,dass Sieein paar zusätzliche Schrittebenötigen,um Transaktionen offline zu unterzeichnen.
Eine Möglichkeit,dies zutun,ist die Verwendung des RPC:
/Ketten/Haupt-/Blöcke/Kopf/Helfer/Forge/Operationen
dokumentiert hier .
Siebenötigen dafüreinen laufenden Knoten,aber dafürmüssen Sienichtmit dem Internet verbunden sein. Siemüssen auch den Hasheines aktuellen Blocksmanuell angeben.
Siemüssen die Daten unterschreiben,die Sie verlassen,umeine "signierte Operation" zuerhalten,aber leidernichtin der CLI unterstützt wird.Siemüssen dann den Vorgang unterschreiben,den Siemit dem Tezos CLImit
verwenden können./Tezos-Client-Zeichen Bytes & lt; Bytes & GT;für & lt; src >
Siemüssen das "03" Byte vor dem Vorgang hinzufügen. Dies wirkt als Wasserzeichenfür den Unterzeichner.
Schließlichmüssen Sie die Signatur und dennicht signierten Betrieb kombinieren,die leidernichtim CLI unterstützt wird.
Eine andere Möglichkeitbesteht darin,einen Smart-Contract-Vertrag zu verwenden,der unterschriebene Michelson-Daten akzeptiert und Maßnahmenergreift,basierend darauf (z. B. Senden von Geldern aneine in den Parameter angegebene Adresse). Der Vorteil dieses Ansatzesbesteht darin,dass Siebeim Anzeigen der Nachricht selbstnichteinen aktuellen HASHerfahrenmüssen. Sie können den Tezos CLIeinfachmit dem Befehl
verwenden../tezos-client Typecheck Data & lt; Data >gegen Typ & lt; Typ & GT;
gefolgt von
./Tezos-Client-Zeichen Bytes & lt; Data & GT;für & lt; src >
Siemüssen diese Nachricht dannmit einer regulären Transaktion an den Smart Contract senden,aber diese Transaktion kannjedochmit einem Schlüssel ausgeführt werden,dernureine sehrgeringe Menge an Geldern steuert,genau das,wasfür die Transaktionsgebührbenötigt wird.
All transactions included in the Tezos must reference a block hash within the past 60 block hashes. This acts as an additional layer of notarization of the chain, besides the consensus but it means you need a few extra steps to sign transactions offline.
One way to do this is to use the RPC:
/chains/main/blocks/head/helpers/forge/operations
Documented here.
You need a running node for this, but it doesn't have to be connected to the Internet for this. You will also need to manually provide the hash of a recent block.
You'll have to sign the data you get out of it to get a "signed operation" but, unfortunately, that is not supported in the CLI yet.You then need to sign the operation, which you can do using the tezos cli with
./tezos-client sign bytes <bytes> for <src>
You will need to add the "03" byte in front of the operation. This acts as a watermark for the signer.
Finally you need to combine the signature and the unsigned operation, unfortunately that is not supported in the CLI yet.
Another way is to use a smart-contract that accepts signed Michelson data and takes action based on it (for instance, send funds to an address specified in the parameters). The benefit of this approach is that you do not need to know a recent hash when signing the message itself. You can just use the tezos cli with the command
./tezos-client typecheck data <data> against type <type>
followed by
./tezos-client sign bytes <data> for <src>
You will then have to send this message to the smart contract with a regular transaction, but that transaction can be performed with a key that only controls a very small amount of funds, just what is needed to pay for the transaction fee.
-
"Leider wird dasin der CLInochnicht unterstützt" -man kannin der Tat `signbytes 0x03 ...für
`,anstatt (in der zweiten Situation) `signbytes 0x05 ...für `. "unfortunately, that is not supported in the CLI yet" -- One can indeed `sign bytes 0x03... for`, rather than (in the second situation) `sign bytes 0x05... for `. - 0
- 2019-01-30
- Tom
-
Ah,ich warmirnicht sicher,ob "Zeichenfür"für 0x03tätigist,erzeugtereine gültige signierte Transaktion?ah, I wasn't sure if "sign for" worked for 0x03, does it produce a valid signed transaction?
- 0
- 2019-01-30
- Arthur B
-
gibt Ihnenimmernoch keinen unterschriebenen Betriebstill doesn't give you a signed operation though
- 1
- 2019-01-30
- Arthur B
-
Vielen Dank @ Tarthurb: Thumbsup: Ich denke,das CLI wäreein sicherer und "offizielles" Weg.Aber IMHOistnicht derbenutzerfreundlichste Wegfür die Mehrheit der Menschen.Thank you @ArthurB :thumbsup: I guess using the CLI would be a safe and "official" way. But IMHO it is not the most user-friendly way for the majority of people.
- 1
- 2019-01-31
- XTZST2O
Wieerstellen Sieeine Offline-Transaktion aufeinem Air-Gapped-Gerät und senden Sieihnin das Netzwerk?