OSDN Git Service

Update README_zh.md
[bytom/bytom-java-sdk.git] / tx-signer / README.md
1 \r
2 \r
3 # tx-signer  \r
4   \r
5 Java implementation of signing transaction offline.\r
6   \r
7 ## Pre  \r
8   \r
9 #### Add dependency to your project \r
10   \r
11 1. first get source code  \r
12   \r
13    ```\r
14    git clone https://github.com/Bytom/bytom-java-sdk.git  \r
15    ```  \r
16   \r
17 2. install to maven repository\r
18   \r
19    ```  \r
20    $ mvn clean install -DskipTests  \r
21    ```  \r
22   \r
23 3. add dependency\r
24     ```xml\r
25     <dependency>\r
26         <groupId>io.bytom</groupId>\r
27         <artifactId>tx-signer</artifactId>\r
28         <version>1.0.0</version>\r
29     </dependency>\r
30     ```\r
31   \r
32 ## Example\r
33 \r
34 #### build transaction with spend input\r
35 ```\r
36         String btmAssetID = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";\r
37         \r
38         // create spend input\r
39         SpendInput input = new SpendInput();\r
40         input.setAssetId(btmAssetID);\r
41         input.setAmount(9800000000L);\r
42         \r
43         // control program of spend utxo\r
44         input.setProgram("0014cb9f2391bafe2bc1159b2c4c8a0f17ba1b4dd94e");\r
45         \r
46         // source position of spend utxo\r
47         input.setSourcePosition(2);\r
48         \r
49         // source id of spend utxo\r
50         input.setSourceID("4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adea");\r
51         \r
52         // is the spend utxo used for change\r
53         input.setChange(true);\r
54         \r
55         // BIP protocol for derived paths, default BIP44\r
56         input.setBipProtocol(BIPProtocol.BIP32);\r
57         \r
58         // contorl program index of spend utxo\r
59         input.setControlProgramIndex(457);\r
60         \r
61         // account index\r
62         input.setKeyIndex(1);\r
63         \r
64         // provide a root private key for signing\r
65         input.setRootPrivateKey("4864bae85cf38bfbb347684abdbc01e311a24f99e2c7fe94f3c071d9c83d8a5a349722316972e382c339b79b7e1d83a565c6b3e7cf46847733a47044ae493257");\r
66 \r
67         // build transaction with signature\r
68         Transaction tx = new Transaction.Builder()\r
69                 .addInput(input)\r
70                 .addOutput(new Output(btmAssetID, 8800000000L, "0014a82f02bc37bc5ed87d5f9fca02f8a6a7d89cdd5c"))\r
71                 .addOutput(new Output(btmAssetID, 900000000L, "00200824e931fb806bd77fdcd291aad3bd0a4493443a4120062bd659e64a3e0bac66"))\r
72                 .setTimeRange(0)\r
73                 .build();\r
74 \r
75         String rawTransaction = tx.rawTransaction();\r
76 ```\r
77 \r
78 #### build transaction with issuance input\r
79 ```\r
80         IssuanceInput issuanceInput = new IssuanceInput();\r
81         issuanceInput.setAssetId("7b38dc897329a288ea31031724f5c55bcafec80468a546955023380af2faad14");\r
82         issuanceInput.setAmount(100000000000L);\r
83         \r
84         // issuance program\r
85         issuanceInput.setProgram("ae2054a71277cc162eb3eb21b5bd9fe54402829a53b294deaed91692a2cd8a081f9c5151ad");\r
86         issuanceInput.setNonce("ac9d5a527f5ab00a");\r
87         \r
88         // asset index\r
89         issuanceInput.setKeyIndex(5);\r
90         \r
91         // raw asset definition\r
92         issuanceInput.setRawAssetDefinition("7b0a202022646563696d616c73223a20382c0a2020226465736372697074696f6e223a207b7d2c0a2020226e616d65223a2022222c0a20202273796d626f6c223a2022220a7d");\r
93         \r
94         // provide a root private key for signing\r
95         issuanceInput.setRootPrivateKey("4864bae85cf38bfbb347684abdbc01e311a24f99e2c7fe94f3c071d9c83d8a5a349722316972e382c339b79b7e1d83a565c6b3e7cf46847733a47044ae493257");\r
96 \r
97         SpendInput spendInput = new SpendInput();\r
98         spendInput.setAssetId(btmAssetID);\r
99         spendInput.setAmount(9800000000L);\r
100         spendInput.setProgram("0014cb9f2391bafe2bc1159b2c4c8a0f17ba1b4dd94e");\r
101         spendInput.setKeyIndex(1);\r
102         spendInput.setChange(true);\r
103         spendInput.setSourceID("4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adea");\r
104         spendInput.setSourcePosition(2);\r
105         spendInput.setControlProgramIndex(457);\r
106         spendInput.setRootPrivateKey("4864bae85cf38bfbb347684abdbc01e311a24f99e2c7fe94f3c071d9c83d8a5a349722316972e382c339b79b7e1d83a565c6b3e7cf46847733a47044ae493257");\r
107 \r
108         Transaction tx = new Transaction.Builder()\r
109                 .addInput(issuanceInput)\r
110                 .addInput(spendInput)\r
111                 .addOutput(new Output("7b38dc897329a288ea31031724f5c55bcafec80468a546955023380af2faad14", 100000000000L, "001437e1aec83a4e6587ca9609e4e5aa728db7007449"))\r
112                 .addOutput(new Output(btmAssetID, 9700000000L, "00148be1104e04734e5edaba5eea2e85793896b77c56"))\r
113                 .setTimeRange(0)\r
114                 .build();\r
115 \r
116         String rawTx = tx.rawTransaction();\r
117 \r
118 ```