Code Monkey home page Code Monkey logo

jdchain's People

Contributors

cg-zhou avatar huanghaiquan avatar imuge avatar jdchain avatar wangzhiyong69 avatar zhaoguangwei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jdchain's Issues

第二次执行合约交易方法报错:The accessing index is out of BytesSlice's bounds

第一执行合约方法没问题,参数不变重新执行就报错;
节点错误信息:java.lang.IllegalStateException: LedgerEditor had been committed!
网关错误:2 // 1 // TIMEOUT // Replies received: 0
15:57:59.072 ERROR com.jd.blockchain.gateway.web.GatewayGlobalExceptionHandler 34 json - Unexpected exception occurred! --[RequestURL=[POST] http://xx.xx.xx:xxxx/rpc/tx][class java.lang.NullPointerException]null java.lang.NullPointerException: null
at com.jd.blockchain.binaryproto.BinaryEncodingUtils.decode(BinaryEncodingUtils.java:40) ~[binary-proto-0.8.3.RELEASE.jar!/:0.8.3.RELEASE]
at com.jd.blockchain.sdk.service.NodeSigningAppender.process(NodeSigningAppender.java:78) ~[sdk-base-0.8.3.RELEASE.jar!/:0.8.3.RELEASE]
at com.jd.bl

执行合约eventContext.getLedger().dataAccount(ASSET_ADDRESS).set(KEY_TOTAL,amount,-1) 报空指针

java.lang.NullPointerException
at com.jd.blockchain.ledger.core.DataAccount.setBytes(DataAccount.java:45)
at com.jd.blockchain.ledger.core.impl.handles.DataAccountKVSetOperationHandle.process(DataAccountKVSetOperationHandle.java:28)
at com.jd.blockchain.ledger.core.impl.TransactionBatchProcessor$1.handle(TransactionBatchProcessor.java:99)
at com.jd.blockchain.ledger.core.impl.handles.ContractLedgerContext$DataAccountKVSetOperationExecBuilder.set(ContractLedgerContext.java:294)
at com.jd.blockchain.contract.OneContractImpl.issue(OneContractImpl.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:223)
at com.jd.blockchain.contract.jvm.JavaContractCode$ContractThread.run(JavaContractCode.java:73)
at com.jd.blockchain.runtime.AbstractModule.execute(AbstractModule.java:39)
at com.jd.blockchain.contract.jvm.JavaContractCode.processEvent(JavaContractCode.java:51)
at com.jd.blockchain.ledger.core.impl.handles.ContractEventSendOperationHandle.process(ContractEventSendOperationHandle.java:43)
at com.jd.blockchain.ledger.core.impl.TransactionBatchProcessor.schedule(TransactionBatchProcessor.java:105)
at com.jd.blockchain.peer.consensus.ConsensusMessageDispatcher$RealmProcessor.schedule(ConsensusMessageDispatcher.java:197)
at com.jd.blockchain.peer.consensus.ConsensusMessageDispatcher.processOrdered(ConsensusMessageDispatcher.java:76)
at com.jd.blockchain.consensus.bftsmart.service.BftsmartNodeServer.blockAndReply(BftsmartNodeServer.java:239)
at com.jd.blockchain.consensus.bftsmart.service.BftsmartNodeServer.appExecuteBatch(BftsmartNodeServer.java:228)
at bftsmart.tom.server.defaultservices.DefaultRecoverable.executeBatch(DefaultRecoverable.java:96)
at bftsmart.tom.server.defaultservices.DefaultRecoverable.executeBatch(DefaultRecoverable.java:76)
at bftsmart.tom.ServiceReplica.receiveMessages(ServiceReplica.java:575)
at bftsmart.tom.core.DeliveryThread.deliverMessages(DeliveryThread.java:293)
at bftsmart.tom.core.DeliveryThread.run(DeliveryThread.java:224)

智能合约类名过长导致jdchain加载失败

【转】https://github.com/blockchain-jd-com/jdchain-starter/issues/10

如果上传一个类名很长的智能合约,在区块链浏览器中查看合约源码信息时,会提示报错:
!!! ERROR: Failed to load class com/jd/jr/contract/service/impl/Name11621579428723462144Co.

目前发现类名的总长度(加包名)控制在58字符之内是OK的,大家可以先用短类名。
如果是长类名,解析会有问题,目前正在修复。后续有最新进展,会及时更新issue。

gateway启动报错-The specified file is not a private key file!

网关启动报错了,错误信息如下:
Starting web server......
Error!! The specified file is not a private key file!

从错误信息来看,是private key file 设置的问题,但是我没有设置private key的文件路径,直接设置了key,具体如下:

#默认公钥的内容(Base58编码数据);
keys.default.pubkey=3snPdw7i7PZKQFkED2uFeeTNxYoBQv5NgnyvySgYzCS54pri2UtoUy
#默认私钥的路径;在 pk-path 和 pk 之间必须设置其一;
keys.default.privkey-path=
#默认私钥的内容(加密的Base58编码数据);在 pk-path 和 pk 之间必须设置其一;
keys.default.privkey=3snPdw7i7PiGQLK2bp5VqzDnqrSrwKSd8TpAcLDv4cQzWj3Nq7ba6R
#默认私钥的解码密码;
keys.default.privkey-password=Ej2nZUzgdhqzQAp68CadTa4DMLKeNN69YHhGty2wpqbF

节点发现机制

请问如果我在机器A中的配置文件动态增加了一个新的节点,那么在同一个链上的机器B能感知到这个新增加的节点吗,可以的话能告知下源码在哪里吗

跑jdchain sdk-sample注册用户测试用例报错

前提:部署4个peer和一个gateway,均能正常访问
问题:跑sdk-sample注册用户测试用例报以下错误,说没注册(但是数据区块貌似也写进去了的),请帮忙看下呢,谢谢
image

另外 bftsmart默认共识算法需要启4个peer,这个怎么在本地方便的debug哦

是要在环境中预先安装rocksdb吗?

执行mvn clean package报错了

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.
21.0:test (default-test) on project storage-rocksdb: There are test failures.
[ERROR]
[ERROR] Please refer to C:\Users\dengyj\workspace\go\src\github.com\blockchain-j
d-com\jdchain\source\storage\storage-rocksdb\target\surefire-reports for the ind
ividual test results.
[ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].
dumpstream and [date]-jvmRun[N].dumpstream.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
eption
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command

请教jd chain 怎么连接rocksdb的?

根据配置文件示例,提到 rocksdb0.db,我在 rocksdb 编译后 也没发现这个 db后缀的文件,关于rocksdb 相关的东西 文档能说详细一点么?

关于目前bftsmart共识算法可靠性的疑惑-Quorum is satisfied, but leader maybe do evil, will goto pre compute rollback branch!

环境:

在一台linux系统中搭建了四个基于bftsmart共识算法的peer节点,端口编排为7080,7081,7082,7083 。其中网关节点连接的是7080端口

操作:

通过sdk链接网关创建新的用户,网关响应操作成功

问题:

区块链浏览器上查不到新增的用户数据,也没有更新的区块交易

相关日志:

7080节点中的bftsmart打印了如下日志:

Quorum is satisfied, but leader maybe do evil, will goto pre compute rollback branch!

疑惑

经查bftsmart源码发现,上面的日志是7080节点的bftsmart作为接受者计算接受本次共识价值时抛出的,初步判定节点间就新增数据账户的操作未达成共识,事务回滚了。这个应该是正常的逻辑,但是有两点比较疑惑

  • 一、如果是正常回滚了,网关层给SDK的响应应该失败才是吧。
  • 二、这个比较严重,当我第二次尝试注册同一个用户时,网关返回未知的错误,查看peer节点日志发现7081、7082、7083节点都抛了如下异常,提示用户已存在:
Roles authorization of User[" LdeNxSHGtdFA44TmHkgr6oYRfJ6ZWRVjuyZgV"] already exists!

然后我将网关链接端口换成7081后,发现之前的新增用户操作并没回滚,区块高度和用户数量都比链接7080节点时要多。这个现象表明peer各个节点的数据不一致了,是否意味着目前的基于bftsmart的共识算法实现不可靠呢?????或是否有哪里操作不当导致了这样的问题,是否可避免???

Build Error - Failure to find com.yahoo.ycsb:core:jar:0.1.4 in https://repo.maven.apache.org/maven2

通过 Git 更新至最新版本,在干净的环境下执行:
maven clean package -Dmaven.test.skip=true。

没有通过 Build - 看起来仍然是依赖包com.yahoo.ycsb:core:jar:0.1.4 无法通过 maven2 repository 找到。这个包的地址在 - http://kompics.sics.se/maven/repository/ 上,需要在 POM 里面配置该 repository 才行。

具体的出错信息如下:
[INFO] ledger-rpc ......................................... SUCCESS [ 0.215 s]
[INFO] contract-maven-plugin .............................. SUCCESS [ 1.729 s]
[INFO] consensus-bftsmart ................................. FAILURE [ 0.031 s]
[INFO] consensus-mq ....................................... SKIPPED
[INFO] storage-redis ...................................... SKIPPED
[INFO] storage-rocksdb .................................... SKIPPED
[INFO] storage-composite .................................. SKIPPED
[INFO] gateway ............................................ SKIPPED
[INFO] tools-initializer .................................. SKIPPED
[INFO] peer ............................................... SKIPPED
[INFO] sdk-samples ........................................ SKIPPED
[INFO] tools-keygen-booter ................................ SKIPPED
[INFO] tools-initializer-booter ........................... SKIPPED
[INFO] tools-capability ................................... SKIPPED
[INFO] test ............................................... SKIPPED
[INFO] test-consensus-client .............................. SKIPPED
[INFO] test-consensus-node ................................ SKIPPED
[INFO] test-ledger-core ................................... SKIPPED
[INFO] test-integration ................................... SKIPPED
[INFO] deployment ......................................... SKIPPED
[INFO] deployment-gateway ................................. SKIPPED
[INFO] deployment-peer .................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.602 s
[INFO] Finished at: 2019-04-24T13:57:02+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project consensus-bftsmart: Could not resolve dependencies for project com.jd.blockchain:consensus-bftsmart:jar:0.9.0-SNAPSHOT: Failure to find com.yahoo.ycsb:core:jar:0.1.4 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :consensus-bftsmart
TiedangdeMacBook-Pro:source junahan$

Failed to execute bash script files

jd@ubuntu:~/jdchain/bin$ ./keygen.sh -n jd-com
bash: ./keygen.sh: /bin/bash^M: bad interpreter: No such file or directory

These script files are with Windows format ( CR LF ), should be convert to Unix format ( LF ).

部署Argus检索服务问题

1.启动Value索引服务
argus data 报 ERR! command data not found

2.在产生新的账本索引时报错

---> performance: concurrent task: [6] | [100] blocks cost [13m23.848614302s]  (main)[0910]
     fetch raw data: 18.26691ms                    (chain/ledger_adaptor)[0910]
     parse data: h: 1350 tx: 1 time: 56.31µs       (chain/ledger_adaptor)[0910]
     work [j5uvXTJ1xVEVfovF1QApwfAvHUKPRiTw3GUxDUFUEdhstH-1350] has result   (cworker)[0910]
     work [j5uvXTJ1xVEVfovF1QApwfAvHUKPRiTw3GUxDUFUEdhstH-1350] complete -> current concurrent task: [1]  (cworker)[0910]
     no work to do                                 (cworker)[0910]
---> block j5uvXTJ1xVEVfovF1QApwfAvHUKPRiTw3GUxDUFUEdhstH-1350 complete  (main)[0910]
     fetch and parsed [8] blocks, now [1188]       (main)[0910]
>>>> [FAIL]build mutate failed: dataset[LdeNyMaWmr5NJguuQiywCwvQwg6CVaeSpAZmk] cannot get uid  (main)[0910]
     fetch raw data: 31.566295ms                   (chain/ledger_adaptor)[0910]
     parse data: h: 1349 tx: 1 time: 49.998µs      (chain/ledger_adaptor)[0910]
     work [j5uvXTJ1xVEVfovF1QApwfAvHUKPRiTw3GUxDUFUEdhstH-1349] has result   (cworker)[0910]
     work [j5uvXTJ1xVEVfovF1QApwfAvHUKPRiTw3GUxDUFUEdhstH-1349] complete -> current concurrent task: [0]  (cworker)[0910]
     no work to do                                 (cworker)[0910]
---> block j5uvXTJ1xVEVfovF1QApwfAvHUKPRiTw3GUxDUFUEdhstH-1349 complete  (main)[0910]
     fetch and parsed [8] blocks, now [1188]       (main)[0910]
>>>> [FAIL]build mutate failed: dataset[LdeNyMaWmr5NJguuQiywCwvQwg6CVaeSpAZmk] cannot get uid  (main)[0910]

执行[./ledger-init.sh]报错--

Start consensus with each other participant...
com.jd.blockchain.utils.http.HttpServiceException: Connect to 127.0.0.1:8810 [/127.0.0.1] failed: Connection refused (Connection refused)

Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:8820 [/127.0.0.1] failed: Connection refused (Connection refused)

有点疑惑,这个脚本我理解的只是生成ledger-binding.conf文件用的,怎么会尝试连接账本初始的服务哪。。

Failed to execute mvn clean package - missing the com.yahoo.ycsb:core:jar:0.1.4

[INFO] consensus-bftsmart ................................. FAILURE [ 0.031 s]
[INFO] consensus-mq ....................................... SKIPPED
[INFO] storage-redis ...................................... SKIPPED
[INFO] storage-rocksdb .................................... SKIPPED
[INFO] storage-composite .................................. SKIPPED
[INFO] gateway ............................................ SKIPPED
[INFO] tools-initializer .................................. SKIPPED
[INFO] peer ............................................... SKIPPED
[INFO] sdk-samples ........................................ SKIPPED
[INFO] tools-keygen-booter ................................ SKIPPED
[INFO] tools-initializer-booter ........................... SKIPPED
[INFO] tools-capability ................................... SKIPPED
[INFO] test ............................................... SKIPPED
[INFO] test-consensus-client .............................. SKIPPED
[INFO] test-consensus-node ................................ SKIPPED
[INFO] test-ledger-core ................................... SKIPPED
[INFO] test-integration ................................... SKIPPED
[INFO] deployment ......................................... SKIPPED
[INFO] deployment-gateway ................................. SKIPPED
[INFO] deployment-peer .................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.338 s
[INFO] Finished at: 2019-04-16T12:30:29+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project consensus-bftsmart: Could not resolve dependencies for project com.jd.blockchain:consensus-bftsmart:jar:0.8.3.RELEASE: Failure to find com.yahoo.ycsb:core:jar:0.1.4 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :consensus-bftsmart

网关高级检索时报grpc异常:wrong wireType = 2 for field StartTs (chain/web)[0167]

综合查询如:
image
argus抛grpc异常如下:

 **** While try to query failed: rpc error: code = Internal desc = grpc: error unmarshalling request: proto: wrong wireType = 2 for field StartTs  (chain/web)[0167]
[GIN] 2019/12/10 - 09:10:42 | 200 |     524.254µs |       127.0.0.1 | GET      /ledgers/j5jiskfAxuxq8Jf21Huz59mnHvHmLKkm5zp2MevSBdPuBu/all/search?keyword=123456

另argus源码是闭源的么

Windows构建的zip包,在linux下运行会有转义符的问题

在assembly.xml中指定lineEnding为unix即可,Windows系统本身是兼容的

    <fileSets>
        <fileSet>
            <directory>src/main/resources/scripts</directory>
            <outputDirectory>bin</outputDirectory>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>src/main/resources/config</directory>
            <outputDirectory>config</outputDirectory>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>src/main/resources/docs</directory>
            <outputDirectory>docs</outputDirectory>
            <lineEnding>unix</lineEnding>
        </fileSet>
    </fileSets>

共识节点的外网ip

从最简单的部署模型来说,需要
image

1个网关和4个节点,节点通过共识算法保持数据一致。 网关配置了4个节点中某一个信息(某个节点的外网或内网ip)。

假设后面加入了独立的第5个节点,第5个节点是否需要一个外网可访问的ip? 第5个节点通过网关找到前4个节点之后,假如前4个节点只能够通过内网互相访问,那第5个节点是怎样进行共识的?

还是说所有节点都必须配备一个外网ip?

补充使用SDK操作区块服务抛The accessing index is out of BytesSlice's bounds!的原因

创建用户时抛如下异常,网关可以正常连接,秘钥认证没有问题:

Caused by: java.lang.IndexOutOfBoundsException: The accessing index is out of BytesSlice's bounds!
	at com.jd.blockchain.utils.io.BytesSlice.checkBoundary(BytesSlice.java:174)
	at com.jd.blockchain.utils.io.BytesSlice.getInt(BytesSlice.java:97)
	at com.jd.blockchain.utils.io.BytesSlice.getInt(BytesSlice.java:86)
	at com.jd.blockchain.binaryproto.impl.HeaderEncoder.resolveCode(HeaderEncoder.java:71)
	at com.jd.blockchain.binaryproto.BinaryProtocol.decode(BinaryProtocol.java:41)
	at com.jd.blockchain.sdk.converters.BinarySerializeResponseConverter.getResponse(BinarySerializeResponseConverter.java:33)
	at com.jd.blockchain.utils.http.agent.HttpServiceAgent.invoke(HttpServiceAgent.java:587)
	... 7 more

网关里的异常

11:57:05.537 ERROR com.jd.blockchain.gateway.web.GatewayGlobalExceptionHandler 34 json - Unexpected exception occurred! --[RequestURL=[POST] http://192.168.1.190:8081/rpc/tx][class java.lang.IllegalStateException]Returned object not currently part of this pool java.lang.IllegalStateException: Returned object not currently part of this pool
	at org.apache.commons.pool2.impl.GenericObjectPool.returnObject(GenericObjectPool.java:530) ~[commons-pool2-2.5.0.jar!/:2.5.0]
	at com.jd.blockchain.consensus.bftsmart.client.BftsmartMessageService.sendOrderedMessage(BftsmartMessageService.java:46) ~[consensus-bftsmart-1.1.1.RELEASE.jar!/:1.1.1.RELEASE]
	at com.jd.blockchain.consensus.bftsmart.client.BftsmartMessageService.sendOrdered(BftsmartMessageService.java:22) ~[consensus-bftsmart-1.1.1.RELEASE.jar!/:1.1.1.RELEASE]
	at com.jd.blockchain.sdk.service.NodeSigningAppender.process(NodeSigningAppender.java:84) ~[sdk-base-1.1.1.RELEASE.jar!/:1.1.1.RELEASE]
	at com.jd.blockchain.sdk.service.PeerServiceProxy.process(PeerServiceProxy.java:89) ~[sdk-base-1.1.1.RELEASE.jar!/:1.1.1.RELEASE]
	at com.jd.blockchain.gateway.web.TxProcessingController.process(TxProcessingController.java:70) ~[gateway-1.1.1.RELEASE.jar!/:1.1.1.RELEASE]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_231]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_231]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_231]

最终查明异常是由于创建AsynchServiceProxy失败导致的,这部分实现采用了Apache-commons-pool2。实现如下:

public class BftsmartPeerProxyFactory extends BasePooledObjectFactory<AsynchServiceProxy> {

    private BftsmartClientSettings bftsmartClientSettings;

    private int gatewayId;

    private AtomicInteger index = new AtomicInteger(1);

    public BftsmartPeerProxyFactory(BftsmartClientSettings bftsmartClientSettings, int gatewayId) {
        this.bftsmartClientSettings = bftsmartClientSettings;
        this.gatewayId = gatewayId;
    }

    @Override
    public AsynchServiceProxy create() throws Exception {

        BftsmartTopology topology = BinarySerializeUtils.deserialize(bftsmartClientSettings.getTopology());

        MemoryBasedViewStorage viewStorage = new MemoryBasedViewStorage(topology.getView());
        TOMConfiguration tomConfiguration = BinarySerializeUtils.deserialize(bftsmartClientSettings.getTomConfig());

        //every proxy client has unique id;
        tomConfiguration.setProcessId(gatewayId + index.getAndIncrement());
        AsynchServiceProxy peerProxy = new AsynchServiceProxy(tomConfiguration, viewStorage);
        return peerProxy;
    }

    @Override
    public PooledObject<AsynchServiceProxy> wrap(AsynchServiceProxy asynchServiceProxy) {
        return new DefaultPooledObject<>(asynchServiceProxy);
    }
}

这个代码BinarySerializeUtils.deserialize(bftsmartClientSettings.getTopology())返回的是null,没有正确拿到Bftsmart的网络拓扑。进而查看peer节点,发现只有节点0成功了,其他都抛如下异常,初步判断bftsmart的副本服务因为端口占用启动失败了:

11:36:48.479 ERROR bftsmart.tom.ServiceReplica 247 init - null java.net.BindException: 地址已在使用
	at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_231]
	at sun.nio.ch.Net.bind(Net.java:433) ~[?:1.8.0_231]
	at sun.nio.ch.Net.bind(Net.java:425) ~[?:1.8.0_231]
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[?:1.8.0_231]
	at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:130) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1358) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:1019) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:254) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:366) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-all-4.1.29.Final.jar:4.1.29.Final]
	at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_231]

从bftsmart官方文档得知,如果在同一个主机运行,不能使用顺序的端口号,即一开始编排的peer的共识端口,6000、6001、6002、6003是不行的,原因如下:
如果在同一台计算机(127.0.0.1)中部署/执行了某些(或全部)副本,config/hosts.config则不能具有顺序的端口号(例如10000、10001、10002、10003)。这是因为每个副本都绑定了两个端口:一个用于接收来自客户端的消息,另一个用于接收来自其他副本的消息(通过获取下一个端口号选择) 。更一般而言,如果为副本R分配了端口号P,它将尝试将端口P(绑定到接收到的客户端请求)和端口P + 1(绑定到其他副本)进行绑定。如果不执行此准则,则副本可能无法绑定所有需要的端口。
文档地址:https://github.com/bft-smart/library/wiki/Deployment-Guidelines

1.0.0升级1.1.2,用的rocksdb,原有的数据怎么保留

这边在测试升级的时候,在ledger-binding.conf中的数据库地址指向原本的rocksdb文件夹,节点报错com.jd.blockchain.peer.web.ManagementController 217 setConfig - Error occurred on configing LedgerBindingConfig! --Ledger doesn't exist! java.lang.RuntimeException: Ledger doesn't exist!

4个节点初始化失败

一台电脑部署4个节点,同时运行ledger-init.sh,4个节点ledger-init.sh 内容一致 包括ledger.seed 和4个节点的公钥配置,其中只有一个节点成功,另外3个都报 Error!! -- Participant already exist!,

初始化账本 一直卡在走‘Check LedgerInit's Status ....’没有出现完成

初始化账本不报错也没成功一直状态如下
Execute LedgerInit's Command -> SUCCESS

1 Check LedgerInit's Status ......
2 Check LedgerInit's Status ......
3 Check LedgerInit's Status ......
。。。。。。。
N Check LedgerInit's Status ......
按照视频中配置,视频里是直接跳过了这块,请问是哪里的问题(一直在检查没有停止2小时了)
1.1.1版本

请教下事哪里配置或是出现了问题,是在同一台机器上配置的。
服务器也未爆出异常。

初始化账本,交易许可失败:Invalid permission from participant

环境:

共识提供者采用RabbitMQ,使用ledger-init.sh脚本初始化账本时输出如下信息,账本创建失败

说明:

在请求其它参与方的账本创建许可时,输出如下异常:

Invalid permission from participant! --[Id=LdeNn8bWuc2DaqAbx3XCQPUf7bdb94PTKFT2E][name=node1.com]
Invalid permission from participant! --[Id=LdeNezcG3rhs31u8UBSwvfMf2BKr1ZkaLKJAG][name=node2.com]
Invalid permission from participant! --[Id=LdeNqxGmBdmEZK6hVeLcnXppW2qnLLKMMiQhN][name=node3.com]

`看到这个输出,就代表可以排除公私钥的问题的。因为这个是最后一步许可,交易哈希许可签名验证失败输出的。而交易哈希是根据当前账本上下文创建的,当前账本上下文是根据初始化账本配置装载的,所以最后的问题出在初始化账本的配置上面。我是因为理解错了下面的配置:

# 当前账本交易发送队列主题(不同账本需不同主题)
system.msg.queue.topic.tx=node3-topic

误以为每个节点的交易队列需要不同主题,导致了每个节点加载的账本不一致,从而导致了上面的交易签名验证失败

解决

初始化账本时一般包含三个配置文件,账本配置 ledger.init,本地节点配置:local.conf ,共识服务配置:bftsmart.config 或mq.config ,其**识服务配置是包含在账本配置ledger.init里被加载的,所以
初始化一个区块链账本需要保证 每个节点的【账本配置 + 共识服务配置 】一模一样。才能保证交易签名哈希一致

初始化账本疑问

根据文档所说,初始化账本需要至少4个peer,最后生成出 ledger-binding.conf
但是启动peer又需要 ledger-binding.conf

所以是先初始化账本还是先启动peer先呢?

另:peer-1.1.0.RELEASE程序中 有manager-startup.sh启动后有个区块链工具,打开看到有公私钥管理、账本管理的界面。 看样子也能用来初始化账本,但文档中未见提及,请问这个工具有使用文档吗?

image

代码开源疑问

我刚刚拉下代码,但有三个依赖库maven获取不到,是不是没有开源?
com.jd.blockchain:bft-smart
com.jd.blockchain:data-explorer
com.jd.blockchain:manager-explorer

数据检索系统(Argus)使用问题-grpc error

记录一下用户反馈的问题:
我是一位区块链技术爱好者,目前在用到Argus的过程中遇到了一个问题,一直没找到对应的资料,也没有找到对应的开源源代码,希望能够帮看下是什么原因造成的。
image

网关日志输出:
request = {http://192.168.1.90:10001/ledgers/j5uvbVV7S6vS7FzyWG4RujUeLEv2gBEMTY7pkzY4gCho8R/all/search?keyword=LdeNoBXaBSA4BYfL9oBa1Yx79BNTadTgvGjLi}
result = {{"success":false,"error":{"errorCode":1,"errorMessage":"rpc error: code = Internal desc = grpc: error unmarshalling request: proto: wrong wireType = 2 for field StartTs"}}}

查看api-server.log日志文件输出:
---> {
query_ledgers(func: has(ledger-hash_id)) @normalize
{
uid
status-ledger:ledger-hash_id
status-height:count(ledger-block)
}
} (searcher/query)[2020-03-14 14:53:32]
**** query ledger from dgraph failed: rpc error: code = Internal desc = grpc: error unmarshalling request: proto: wrong wireType = 2 for field StartTs (searcher/query)[2020-03-14 14:53:32]
**** While try to query failed: rpc error: code = Internal desc = grpc: error unmarshalling request: proto: wrong wireType = 2 for field StartTs (searcher/query)[2020-03-14 14:53:46]

查看ledger-rdf.log日志文件输出:
**** While try to query failed: rpc error: code = Internal desc = grpc: error unmarshalling request: proto: wrong wireType = 2 for field StartTs (helper)[2020-03-14 14:54:36]
**** -------------------------------------------------------------------------------------------------------------------------------- (helper)[2020-03-14 14:54:36]
---> {
query_node(func: eq(ledger-hash_id, "j5uvbVV7S6vS7FzyWG4RujUeLEv2gBEMTY7pkzY4gCho8R")) {
uid
expand(all)
}
} (helper)[2020-03-14 14:54:36]

经过反复查看、验证http://ledger.jd.com/argus.html中提供的方法,仍然解决不了这个问题,希望贵公司该项目的技术人员能够帮排查下是什么原因造成的,该怎么解决,谢谢!

failed to build - dependency package browser:0.6.6 is not exist in center repository.

[INFO] gateway 0.9.0-SNAPSHOT ............................. FAILURE [ 0.149 s]
[INFO] tools-initializer 0.9.0-SNAPSHOT ................... SKIPPED
[INFO] peer 0.9.0-SNAPSHOT ................................ SKIPPED
[INFO] sdk-samples 0.9.0-SNAPSHOT ......................... SKIPPED
[INFO] tools-keygen-booter 0.9.0-SNAPSHOT ................. SKIPPED
[INFO] tools-initializer-booter 0.9.0-SNAPSHOT ............ SKIPPED
[INFO] tools-capability 0.9.0-SNAPSHOT .................... SKIPPED
[INFO] test 0.9.0-SNAPSHOT ................................ SKIPPED
[INFO] test-consensus-client 0.9.0-SNAPSHOT ............... SKIPPED
[INFO] test-consensus-node 0.9.0-SNAPSHOT ................. SKIPPED
[INFO] test-ledger-core 0.9.0-SNAPSHOT .................... SKIPPED
[INFO] test-integration 0.9.0-SNAPSHOT .................... SKIPPED
[INFO] deployment 0.9.0-SNAPSHOT .......................... SKIPPED
[INFO] deployment-gateway 0.9.0-SNAPSHOT .................. SKIPPED
[INFO] deployment-peer 0.9.0-SNAPSHOT ..................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.736 s
[INFO] Finished at: 2019-04-17T14:22:21+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project gateway: Could not resolve dependencies for project com.jd.blockchain:gateway:jar:0.9.0-SNAPSHOT: Failure to find com.jd.blockchain:browser:jar:0.6.6.RELEASE in http://central.maven.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]

peer和gateway的健壮性

情况如下:
sdk里先用正确的公私钥去操作是没问题的,但假如换了一个不属于任何节点的公私钥,peer会报错,gw会超时:

image

这时换回正常的公私钥去操作gw也会一直超时的。 peer好像恢复不过来。

而且好像不止这种情况,例如向错误的地址commit数据,只要是sdk里参数不正确,导致peer异常了,之后网关就会一直超时操作不了了。目前只能通过重启peer和gw来解决。

Duplicate class org.apache.commons.logging.Log found in modules commons-logging-1.2.jar (commons-logging:commons-logging:1.2) and spring-jcl-5.0.10.RELEASE.jar (org.springframework:spring-jcl:5.0.10.RELEASE)

android studio gradle 引入implementation 'com.jd.blockchain:sdk-client:0.8.3.RELEASE'后运行报错
org.apache.commons.logging.Log冲突 请问怎么解决

java.lang.RuntimeException: Duplicate class org.apache.commons.logging.Log found in modules commons-logging-1.2.jar (commons-logging:commons-logging:1.2) and spring-jcl-5.0.10.RELEASE.jar (org.springframework:spring-jcl:5.0.10.RELEASE)
Duplicate class org.apache.commons.logging.LogFactory found in modules commons-logging-1.2.jar (commons-logging:commons-logging:1.2) and spring-jcl-5.0.10.RELEASE.jar (org.springframework:spring-jcl:5.0.10.RELEASE)
Duplicate class org.apache.commons.logging.LogFactory$1 found in modules commons-logging-1.2.jar (commons-logging:commons-logging:1.2) and spring-jcl-5.0.10.RELEASE.jar (org.springframework:spring-jcl:5.0.10.RELEASE)
Duplicate class org.apache.commons.logging.LogFactory$2 found in modules commons-logging-1.2.jar (commons-logging:commons-logging:1.2) and spring-jcl-5.0.10.RELEASE.jar (org.springframework:spring-jcl:5.0.10.RELEASE)
Duplicate class org.apache.commons.logging.impl.NoOpLog found in modules commons-logging-1.2.jar (commons-logging:commons-logging:1.2) and spring-jcl-5.0.10.RELEASE.jar (org.springframework:spring-jcl:5.0.10.RELEASE)
Duplicate class org.apache.commons.logging.impl.SimpleLog found in modules commons-logging-1.2.jar (commons-logging:commons-logging:1.2) and spring-jcl-5.0.10.RELEASE.jar (org.springframework:spring-jcl:5.0.10.RELEASE)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.