From 062064bb9a8e99fb03696ecc2e65538160f6a843 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 16 Apr 2019 21:13:57 +0000 Subject: [PATCH 01/10] chore(deps): bump logging-interceptor from 3.14.0 to 3.14.1 Bumps logging-interceptor from 3.14.0 to 3.14.1. Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index fd8c10e32..16174c612 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { ext.gsonVersion = '2.8.5' ext.jacksonVersion = '2.8.5' ext.okhttpVersion = '3.14.0' - ext.loggingOkhttpVersion = '3.14.0' + ext.loggingOkhttpVersion = '3.14.1' ext.slf4jVersion = '1.7.26' ext.junitVersion = '4.12' From 556ebec0d8d678e5e7bee82ed570ea784e1d0835 Mon Sep 17 00:00:00 2001 From: duanyytop Date: Wed, 17 Apr 2019 20:48:47 +0800 Subject: [PATCH 02/10] feat: Change RPC types per CKB change --- console/src/main/java/org/nervos/ckb/RpcRequest.java | 6 +++--- core/src/main/java/org/nervos/ckb/methods/type/Header.java | 7 ++----- core/src/main/java/org/nervos/ckb/methods/type/Script.java | 6 ++---- core/src/main/java/org/nervos/ckb/service/CKBApi.java | 4 ++-- .../java/org/nervos/ckb/service/JsonRpcCKBApiImpl.java | 4 ++-- core/src/test/java/type/ScriptTest.java | 4 ++-- 6 files changed, 13 insertions(+), 18 deletions(-) diff --git a/console/src/main/java/org/nervos/ckb/RpcRequest.java b/console/src/main/java/org/nervos/ckb/RpcRequest.java index 5f1d425d6..18e1fdbcf 100644 --- a/console/src/main/java/org/nervos/ckb/RpcRequest.java +++ b/console/src/main/java/org/nervos/ckb/RpcRequest.java @@ -26,7 +26,7 @@ public class RpcRequest { ckbService = CKBService.build(new HttpService(NODE_URL)); } - public static String getBlockHash(long blockNumber) throws IOException { + public static String getBlockHash(String blockNumber) throws IOException { return ckbService.getBlockHash(blockNumber).send().getBlockHash(); } @@ -52,7 +52,7 @@ public static NodeInfo localNodeInfo() throws IOException { return ckbService.localNodeInfo().send().getNodeInfo(); } - public static List getCellsByLockHash(String lockHash, long fromBlockNumber, long toBlockNumber) throws IOException { + public static List getCellsByLockHash(String lockHash, String fromBlockNumber, String toBlockNumber) throws IOException { return ckbService.getCellsByLockHash(lockHash, fromBlockNumber, toBlockNumber).send().getCells(); } @@ -69,7 +69,7 @@ public static String sendTransaction(Transaction transaction) throws IOException public static Block genesisBlock() throws IOException { - String blockHash = ckbService.getBlockHash(0).send().getBlockHash(); + String blockHash = ckbService.getBlockHash("0").send().getBlockHash(); return ckbService.getBlock(blockHash).send().getBlock(); } diff --git a/core/src/main/java/org/nervos/ckb/methods/type/Header.java b/core/src/main/java/org/nervos/ckb/methods/type/Header.java index fb46f769e..4538834f1 100644 --- a/core/src/main/java/org/nervos/ckb/methods/type/Header.java +++ b/core/src/main/java/org/nervos/ckb/methods/type/Header.java @@ -9,7 +9,6 @@ public class Header { /** - * "cellbase_id": "0x3abd21e6e51674bb961bb4c5f3cee9faa5da30e64be10628dc1cef292cbae324", * "difficulty": "0x100", * "hash": "0x087c25e23e42f5d1e00e6984241b3711742d5e0eaf75d79a427276473e1de3f9", * "number": 1, @@ -26,17 +25,15 @@ public class Header { * "version": 0 */ - @JsonProperty("cellbase_id") - public String cellbaseId; public String difficulty; public String hash; - public int number; + public String number; @JsonProperty("parent_hash") public String parentHash; - public long timestamp; + public String timestamp; @JsonProperty("txs_commit") public String txsCommit; diff --git a/core/src/main/java/org/nervos/ckb/methods/type/Script.java b/core/src/main/java/org/nervos/ckb/methods/type/Script.java index d38d040d2..2e153fc77 100644 --- a/core/src/main/java/org/nervos/ckb/methods/type/Script.java +++ b/core/src/main/java/org/nervos/ckb/methods/type/Script.java @@ -15,21 +15,19 @@ public class Script { public static final String ALWAYS_SUCCESS_HASH = "0000000000000000000000000000000000000000000000000000000000000001"; - public int version; @JsonProperty("binary_hash") public String binaryHash; public List args; public Script(){} - public Script(int version, String binaryHash, List args) { - this.version = version; + public Script(String binaryHash, List args) { this.binaryHash = binaryHash; this.args = args; } public static Script alwaysSuccess() { - return new Script(0, ALWAYS_SUCCESS_HASH, Collections.emptyList()); + return new Script(ALWAYS_SUCCESS_HASH, Collections.emptyList()); } public String getTypeHash() { diff --git a/core/src/main/java/org/nervos/ckb/service/CKBApi.java b/core/src/main/java/org/nervos/ckb/service/CKBApi.java index 71d9098bb..0d9e6fdb1 100644 --- a/core/src/main/java/org/nervos/ckb/service/CKBApi.java +++ b/core/src/main/java/org/nervos/ckb/service/CKBApi.java @@ -15,11 +15,11 @@ public interface CKBApi { Request getTransaction(String transactionHash); - Request getBlockHash(long blockNumber); + Request getBlockHash(String blockNumber); Request getTipHeader(); - Request getCellsByLockHash(String lockHash, long fromBlockNumber, long toBlockNumber); + Request getCellsByLockHash(String lockHash, String fromBlockNumber, String toBlockNumber); Request getLiveCell(OutPoint outPoint); diff --git a/core/src/main/java/org/nervos/ckb/service/JsonRpcCKBApiImpl.java b/core/src/main/java/org/nervos/ckb/service/JsonRpcCKBApiImpl.java index b0de133f7..19feaa860 100644 --- a/core/src/main/java/org/nervos/ckb/service/JsonRpcCKBApiImpl.java +++ b/core/src/main/java/org/nervos/ckb/service/JsonRpcCKBApiImpl.java @@ -41,7 +41,7 @@ public Request getTransaction(String transactionHash) { @Override - public Request getBlockHash(long blockNumber) { + public Request getBlockHash(String blockNumber) { return new Request<>( "get_block_hash", Collections.singletonList(blockNumber), @@ -61,7 +61,7 @@ public Request getTipHeader() { @Override - public Request getCellsByLockHash(String lockHash, long fromBlockNumber, long toBlockNumber) { + public Request getCellsByLockHash(String lockHash, String fromBlockNumber, String toBlockNumber) { return new Request<>( "get_cells_by_lock_hash", Arrays.asList(lockHash, fromBlockNumber, toBlockNumber), diff --git a/core/src/test/java/type/ScriptTest.java b/core/src/test/java/type/ScriptTest.java index 15b2997a4..742739155 100644 --- a/core/src/test/java/type/ScriptTest.java +++ b/core/src/test/java/type/ScriptTest.java @@ -17,13 +17,13 @@ public class ScriptTest { @Test public void testEmptyScriptTypeHash() { - Script script = new Script(0, ZERO_HASH, Collections.emptyList()); + Script script = new Script(ZERO_HASH, Collections.emptyList()); Assert.assertEquals("0x266cec97cbede2cfbce73666f08deed9560bdf7841a7a5a51b3a3f09da249e21", script.getTypeHash()); } @Test public void testScriptTypeHash() { - Script script = new Script(0, ZERO_HASH, Collections.singletonList("0x01")); + Script script = new Script(ZERO_HASH, Collections.singletonList("0x01")); Assert.assertEquals("0xdade0e507e27e2a5995cf39c8cf454b6e70fa80d03c1187db7a4cb2c9eab79da", script.getTypeHash()); } From daba4c4f697d67eec46a78bc4a9fa7d5d59fc747 Mon Sep 17 00:00:00 2001 From: duanyytop Date: Thu, 18 Apr 2019 15:53:47 +0800 Subject: [PATCH 03/10] chore: update comment for data taype --- core/src/main/java/org/nervos/ckb/methods/type/Header.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/nervos/ckb/methods/type/Header.java b/core/src/main/java/org/nervos/ckb/methods/type/Header.java index 4538834f1..0c5880a30 100644 --- a/core/src/main/java/org/nervos/ckb/methods/type/Header.java +++ b/core/src/main/java/org/nervos/ckb/methods/type/Header.java @@ -11,10 +11,10 @@ public class Header { /** * "difficulty": "0x100", * "hash": "0x087c25e23e42f5d1e00e6984241b3711742d5e0eaf75d79a427276473e1de3f9", - * "number": 1, + * "number": "1", * "parent_hash": "0x9b0bd5be9498a0b873d08e242fff306eec04fac7c59ce479b49ca92a8f649982", * "seal": { - * "nonce": 16394887283531791882, + * "nonce": "16394887283531791882", * "proof": "0xbd010000810200008a1300002e240000a9350000c4350000ea420000ca4d00005d5d0000766800004b6b000075730000" * }, * "timestamp": 1545992487397, From cf46f942751946147c4c991d9c64306ea90dfd42 Mon Sep 17 00:00:00 2001 From: duanyytop Date: Tue, 23 Apr 2019 19:12:30 +0800 Subject: [PATCH 04/10] test: add more test cases for secp256k1 --- .../java/org/nervos/ckb/crypto/secp256k1/Sign.java | 2 +- .../java/org/nervos/ckb/address/AddressTest.java | 13 +++++++++++++ .../org/nervos/ckb/crypto/secp256k1/SignTest.java | 9 +++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/utils/src/main/java/org/nervos/ckb/crypto/secp256k1/Sign.java b/utils/src/main/java/org/nervos/ckb/crypto/secp256k1/Sign.java index e3f2b5a3d..07a462989 100644 --- a/utils/src/main/java/org/nervos/ckb/crypto/secp256k1/Sign.java +++ b/utils/src/main/java/org/nervos/ckb/crypto/secp256k1/Sign.java @@ -198,7 +198,7 @@ public static BigInteger signedMessageToKey( public static BigInteger publicKeyFromPrivate(BigInteger privKey) { ECPoint point = publicPointFromPrivate(privKey); - byte[] encoded = point.getEncoded(false); + byte[] encoded = point.getEncoded(true); return new BigInteger(1, Arrays.copyOfRange(encoded, 1, encoded.length)); } diff --git a/utils/src/test/java/org/nervos/ckb/address/AddressTest.java b/utils/src/test/java/org/nervos/ckb/address/AddressTest.java index 49dc4c12c..543bdd0e1 100644 --- a/utils/src/test/java/org/nervos/ckb/address/AddressTest.java +++ b/utils/src/test/java/org/nervos/ckb/address/AddressTest.java @@ -2,6 +2,8 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.nervos.ckb.crypto.secp256k1.ECKeyPair; +import org.nervos.ckb.crypto.secp256k1.Sign; import org.nervos.ckb.utils.Bech32; import org.nervos.ckb.utils.Network; import org.nervos.ckb.utils.Numeric; @@ -58,4 +60,15 @@ public void testPublicKeyHashToAddressMainnet() { "ckb1q9gry5zgxmpjnmtrp4kww5r39frh2sm89tdt2l6vqdd7em", utils.generate("0x024a501efd328e062c8675f2365970728c859c592beeefd6be8ead3d901330bc01")); } + + @Test + public void testPrivateKeyHashToAddressTestnet() { + AddressUtils utils = new AddressUtils(Network.TESTNET); + String publicKey = Sign.publicKeyFromPrivate(Numeric.toBigInt("e79f3207ea4980b7fed79956d5934249ceac4751a4fae01a0f7c4a96884bc4e3"), + true).toString(16); + Assertions.assertEquals( + "ckt1q9gry5zgxmpjnmtrp4kww5r39frh2sm89tdt2l6v234ygf", + utils.generate(publicKey)); + } + } diff --git a/utils/src/test/java/org/nervos/ckb/crypto/secp256k1/SignTest.java b/utils/src/test/java/org/nervos/ckb/crypto/secp256k1/SignTest.java index 6a2b06e5f..843a665bd 100644 --- a/utils/src/test/java/org/nervos/ckb/crypto/secp256k1/SignTest.java +++ b/utils/src/test/java/org/nervos/ckb/crypto/secp256k1/SignTest.java @@ -3,9 +3,11 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; import org.nervos.ckb.utils.Numeric; /** Created by duanyytop on 2019-02-01. Copyright © 2018 Nervos Foundation. All rights reserved. */ +@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class SignTest { private ECKeyPair ecKeyPair; @@ -20,6 +22,13 @@ public void init() { "85a1feafb48eae47b88308f525b759d651986e5a4d80a5915cb5d28566d6c7c5"); } + @Test + public void compressedPublicKeyTest() { + String privateKey = "e79f3207ea4980b7fed79956d5934249ceac4751a4fae01a0f7c4a96884bc4e3"; + String publicKey = Numeric.toHexStringNoPrefix(Sign.publicKeyFromPrivate(Numeric.toBigInt(privateKey), true)); + Assertions.assertEquals("24a501efd328e062c8675f2365970728c859c592beeefd6be8ead3d901330bc01", publicKey); + } + @Test public void signMessageTest() { String signResult = From 37ba2a78de9029f08a684d96f59a344d121f73a0 Mon Sep 17 00:00:00 2001 From: duanyytop Date: Wed, 24 Apr 2019 19:08:02 +0800 Subject: [PATCH 05/10] fix: update lock string to script of cell output --- .../methods/type/CellOutputWithOutPoint.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/org/nervos/ckb/methods/type/CellOutputWithOutPoint.java b/core/src/main/java/org/nervos/ckb/methods/type/CellOutputWithOutPoint.java index 21e449b00..001c34f90 100644 --- a/core/src/main/java/org/nervos/ckb/methods/type/CellOutputWithOutPoint.java +++ b/core/src/main/java/org/nervos/ckb/methods/type/CellOutputWithOutPoint.java @@ -2,22 +2,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; -/** - * Created by duanyytop on 2018-12-21. - * Copyright © 2018 Nervos Foundation. All rights reserved. - */ +/** Created by duanyytop on 2018-12-21. Copyright © 2018 Nervos Foundation. All rights reserved. */ public class CellOutputWithOutPoint { - /** - * capacity : 50000 - * lock : 0x321c1ca2887fb8eddaaa7e917399f71e63e03a1c83ff75ed12099a01115ea2ff - * out_point : {"hash":"0xbddb7c2559c2c3cdfc8f3cae2697ca75489521c352265cc9e60b4b2416ad5929","index":0} - */ - - public int capacity; - public String lock; - - @JsonProperty("out_point") - public OutPoint outPoint; + public int capacity; + public Script lock; + @JsonProperty("out_point") + public OutPoint outPoint; } From b4758e1fe34706a366cf66f30054ee96d1421e1c Mon Sep 17 00:00:00 2001 From: duanyytop Date: Wed, 24 Apr 2019 19:26:17 +0800 Subject: [PATCH 06/10] fix: add valid since to cell input --- .../nervos/ckb/methods/type/CellInput.java | 51 ++++++++----------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java b/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java index b3ae553a1..0da9940a7 100644 --- a/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java +++ b/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java @@ -4,44 +4,37 @@ import java.util.List; -/** - * Created by duanyytop on 2019-01-08. - * Copyright © 2018 Nervos Foundation. All rights reserved. - */ +/** Created by duanyytop on 2019-01-08. Copyright © 2018 Nervos Foundation. All rights reserved. */ public class CellInput { - /** - * previous_output : {"hash":"0x0000000000000000000000000000000000000000000000000000000000000000","index":4294967295} - * unlock : {"args":[],"binary":[1,0,0,0,0,0,0,0],"reference":null,"signed_args":[],"version":0} - */ + @JsonProperty("previous_output") + public PreviousOutput previousOutput; - @JsonProperty("previous_output") - public PreviousOutput previousOutput; - public List args; + public List args; - public CellInput(){} + @JsonProperty("valid_since") + public long validSince; - public CellInput(PreviousOutput previousOutput, List args) { - this.previousOutput = previousOutput; - this.args = args; - } + public CellInput() {} - public static class PreviousOutput { - /** - * hash : 0x0000000000000000000000000000000000000000000000000000000000000000 - * index : 4294967295 - */ + public CellInput(PreviousOutput previousOutput, List args) { + this.previousOutput = previousOutput; + this.args = args; + } - public String hash; - public long index; + public static class PreviousOutput { + /** + * hash : 0x0000000000000000000000000000000000000000000000000000000000000000 index : 4294967295 + */ + public String hash; - public PreviousOutput(){} + public long index; - public PreviousOutput(String hash, long index) { - this.hash = hash; - this.index = index; - } + public PreviousOutput() {} + public PreviousOutput(String hash, long index) { + this.hash = hash; + this.index = index; } - + } } From 88723c346a6c78468bdb4c1ac8f02aa29d2158df Mon Sep 17 00:00:00 2001 From: duanyytop Date: Sun, 5 May 2019 10:30:20 +0800 Subject: [PATCH 07/10] chore: update capacity data type of CellOutput --- .../nervos/ckb/methods/type/CellOutput.java | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/core/src/main/java/org/nervos/ckb/methods/type/CellOutput.java b/core/src/main/java/org/nervos/ckb/methods/type/CellOutput.java index b844e26bf..5fa7df060 100644 --- a/core/src/main/java/org/nervos/ckb/methods/type/CellOutput.java +++ b/core/src/main/java/org/nervos/ckb/methods/type/CellOutput.java @@ -1,29 +1,23 @@ package org.nervos.ckb.methods.type; -/** - * Created by duanyytop on 2019-01-08. - * Copyright © 2018 Nervos Foundation. All rights reserved. - */ +/** Created by duanyytop on 2019-01-08. Copyright © 2018 Nervos Foundation. All rights reserved. */ public class CellOutput { - /** - * capacity : 50000 - * type : null - * data : 0x - * lock : 0x321c1ca2887fb8eddaaa7e917399f71e63e03a1c83ff75ed12099a01115ea2ff - */ + /** + * capacity : 50000 type : null data : 0x lock : + * 0x321c1ca2887fb8eddaaa7e917399f71e63e03a1c83ff75ed12099a01115ea2ff + */ + public String capacity; - public long capacity; - public Script type; - public Script lock; - public String data; + public Script type; + public Script lock; + public String data; - public CellOutput(){} - - public CellOutput(long capacity, String data, Script lock) { - this.capacity = capacity; - this.data = data; - this.lock = lock; - } + public CellOutput() {} + public CellOutput(String capacity, String data, Script lock) { + this.capacity = capacity; + this.data = data; + this.lock = lock; + } } From 307c5cc7f717f7818363004914fadd205d422e1f Mon Sep 17 00:00:00 2001 From: duanyytop Date: Sun, 5 May 2019 10:47:14 +0800 Subject: [PATCH 08/10] docs: add license and changelog of README --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 84f4849e4..92c711e9c 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,12 @@ git clone https://github.com/nervosnetwork/ckb-sdk-java.git gradle shadowJar // ./gradlew shadowJar ``` You will get `console-{version}-all.jar` from console module. + + +## License + +The SDK is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). + +## Changelog + +See [CHANGELOG](CHANGELOG.md) for more information. \ No newline at end of file From f9e8538ffab767b7846c7469891b6e78f7640c5b Mon Sep 17 00:00:00 2001 From: duanyytop Date: Sun, 5 May 2019 11:08:53 +0800 Subject: [PATCH 09/10] chore: update CHANGGELOG and version --- CHANGELOG.md | 7 +++++++ build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59f4f2ed3..d4b7b3c31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [v0.10.0](https://github.com/nervosnetwork/ckb-sdk-java/compare/v0.9.0...v0.10.0) (2019-05-06) + +### Bug Fixes + +- Change capacity in RPC interface data type to string ([88723c3](https://github.com/nervosnetwork/ckb-sdk-java/pull/49/commits/88723c346a6c78468bdb4c1ac8f02aa29d2158df)) +- Add valid since to cell input ([b4758e1](https://github.com/nervosnetwork/ckb-sdk-java/pull/49/commits/b4758e1fe34706a366cf66f30054ee96d1421e1c)) + # [v0.9.0](https://github.com/nervosnetwork/ckb-sdk-java/compare/v0.8.0...v0.9.0) (2019-4-22) ### Features diff --git a/build.gradle b/build.gradle index 1594a1b03..519703d46 100644 --- a/build.gradle +++ b/build.gradle @@ -34,7 +34,7 @@ allprojects { targetCompatibility = 1.8 group 'org.nervos.ckb' - version '0.9.0' + version '0.10.0' apply plugin: 'java' From 7d23d3dd301b2a9c8e939f0d7a1348758bd833fe Mon Sep 17 00:00:00 2001 From: duanyytop Date: Sun, 5 May 2019 13:59:39 +0800 Subject: [PATCH 10/10] chore: update valid since data type of cell input --- .../src/main/java/org/nervos/ckb/methods/type/CellInput.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java b/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java index 0da9940a7..63b78f97e 100644 --- a/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java +++ b/core/src/main/java/org/nervos/ckb/methods/type/CellInput.java @@ -13,13 +13,14 @@ public class CellInput { public List args; @JsonProperty("valid_since") - public long validSince; + public String validSince; public CellInput() {} - public CellInput(PreviousOutput previousOutput, List args) { + public CellInput(PreviousOutput previousOutput, List args, String validSince) { this.previousOutput = previousOutput; this.args = args; + this.validSince = validSince; } public static class PreviousOutput {