From b01585bee636b4967d8c909d493f4f4a92e27580 Mon Sep 17 00:00:00 2001 From: stdevAdrianPaez Date: Thu, 15 Aug 2019 18:44:28 -0400 Subject: [PATCH] [hardware wallet] refs #123 Add guide --- .../guides/hardware_wallet_transactions.md | 18 ++++++++++++++++++ _data/img/long-transaction-intro.png | Bin 0 -> 20019 bytes 2 files changed, 18 insertions(+) create mode 100644 _data/dev-docs/guides/hardware_wallet_transactions.md create mode 100644 _data/img/long-transaction-intro.png diff --git a/_data/dev-docs/guides/hardware_wallet_transactions.md b/_data/dev-docs/guides/hardware_wallet_transactions.md new file mode 100644 index 0000000..62f27cb --- /dev/null +++ b/_data/dev-docs/guides/hardware_wallet_transactions.md @@ -0,0 +1,18 @@ + +# Hardware Wallet + +## Protocol for the signing of transactions + +The fundamental objective of the development of the Hardware Wallet is the safe maintenance of the vital data of a wallet, such as the seed. Due to what is necessary for the signing of transactions, the implementation of a protocol that facilitates the signing of transactions internally in the Hardware Wallet is required. + +In broad strokes, and after a series of steps the protocol provides the following result: + +![long-transactions-intro](/_data/img/long-transaction-intro.png) + +The signing process consists of three fundamental steps, wich are: + +- Initialization +- Calculating inner hash of transaction +- Calculating signatures for all inputs + +Each step is based on a cycle of sending and receiving groups of Inputs and Outputs, with at most 7 elements. \ No newline at end of file diff --git a/_data/img/long-transaction-intro.png b/_data/img/long-transaction-intro.png new file mode 100644 index 0000000000000000000000000000000000000000..de2b82ceddc677b586ee93f1ac91d072e4851548 GIT binary patch literal 20019 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 JuJ|*L{{wS}G+_V$ literal 0 HcmV?d00001