通过java版sdk调用智能合约向Fabric提交交易出现异常

是在程序中通过java版的Fabric-sdk调用部署在远程主机上的智能合约执行相关的业务逻辑,但在执行过程中出现异常信息,导致交易请求没有提交到Fabric的peer节点上,具体异常信息如下:

 17:16:06 [http-bio-8080-exec-5] ERROR org.hyperledger.fabric.sdk.Channel - Sending proposal to peer0.org0.example.com failed because of: gRPC failure=Status{code=UNKNOWN, description=chaincode error (status: 500, message: Failed to unmarshal section -), cause=null}
java.lang.Exception: io.grpc.StatusRuntimeException: UNKNOWN: chaincode error (status: 500, message: Failed to unmarshal section -)
    at org.hyperledger.fabric.sdk.Channel.sendProposalToPeers(Channel.java:2241)
    at org.hyperledger.fabric.sdk.Channel.sendProposal(Channel.java:2155)
    at org.hyperledger.fabric.sdk.Channel.sendTransactionProposal(Channel.java:2103)
    at com.cmit.fabric.java.sdk.test.bean.ChaincodeManager.invokeWithTransactionId(ChaincodeManager.java:307)
    at com.cmit.fabric.java.sdk.test.service.impl.SectionSDKServiceImpl.updateSection(SectionSDKServiceImpl.java:155)
    at rsbc.controller.NetworkController.modifySave(NetworkController.java:357)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:293)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
    at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
    at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at net.mopai.filter.SiteStatusFilter.doFilterInternal(SiteStatusFilter.java:50)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at net.mopai.filter.HtmlFilter.doFilterInternal(HtmlFilter.java:40)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: io.grpc.StatusRuntimeException: UNKNOWN: chaincode error (status: 500, message: Failed to unmarshal section -)
    at io.grpc.Status.asRuntimeException(Status.java:526)
    at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:427)
    at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:419)
    at io.grpc.internal.ClientCallImpl.access$100(ClientCallImpl.java:60)
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:493)
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$500(ClientCallImpl.java:422)
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:525)
    at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
    at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:102)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    ... 1 common frames omitted

面对这个问题没有什么头绪,不知道是哪里出了问题,求问Fabric方面的大神能否给帮忙解释一下,这个异常是因为什么问题导致的!!!不胜感激!!!

4个回答

问题已经解决,是因为忽略了在部署多通道情况下,通道数据需要同步,否则会因为chaincode中进行校验而导致chaincode执行失败,最终导致前台应用程序报错。

这个地方的悬赏是我搞错了,只弄了5C币。。。如果有大神能够帮助解决问题,我可以再重新提出这个问题,增加悬赏。。。

JAR包版本的问题,换个版本就好了, 你看下你的是哪个版本

jxm007love
水货大帝 哪个jar包,是fabric-java-sdk的jar包版本吗?现在用的1.0.1版的sdk
一年多之前 回复

你好,我的也报类似的错,mac环境,也是不知头绪。。。

main ERROR Channel:2766 - Sending proposal to peer0.org1.example.com failed because of: gRPC failure=Status{code=UNAVAILABLE, description=Network closed for unknown reason, cause=null}
java.lang.Exception: io.grpc.StatusRuntimeException: UNAVAILABLE: Network closed for unknown reason
at org.hyperledger.fabric.sdk.Channel.sendProposalToPeers(Channel.java:2766)

liaoren512
liaoren512 回复: 你好,你的这个问题解决了吗?我也是这个错.....
12 个月之前 回复
jxm007love
水货大帝 你可以试下看看各个节点主机之间是否存在网络上的问题,端口是否是通的,或者再到peer节点上看看日志,有没有什么提示信息显示
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
智能合约调用篇--通过地址实例化智能合约调用
通过地址实例化智能合约调用 很多时候,我们都是在刚部署好智能合约的时候就对智能合约开始调用,此时的实例可以使用部署时候的实例,但很多时候,我们需要通过地址来调用智能合约,下面我们简单说说怎么使用合约的地址对合约进行调用。 首先知道合约的地址,将合约的地址赋值给address address = "合约的地址" 然后在本地取得合约代码的abi编码 其中Token.tol用solidity语言...
shim-client-1.0.jar fabric智能合约开发
用于编写java版本的 fabric 智能合约(链代码),详细生成过程可参考 IBM developers。
Fabric架构与智能合约开发
Fabric架构与智能合约开发视频教程,本次课程全面介绍Fabric的组成和工作原理,并介绍如何开发Fabric智能合约。Fabric是超级账本(Hyperledger)最早也是最成熟的项目,目前国内腾讯、阿里、百度、华为,国外亚马逊、IBM、微软等所有BaaS厂家都支持的区块链技术,几乎所有国内银行上线的区块链项目都在用Fabric,其他行业也超过一半在用Fabric。
fabric 智能合约做模块化开发
序言 fabric1.0 开发chaincode的例子中一个chaincode都是由一个go文件组成,当做模块化开发时总不能多个人使用同一个go文件吧? 仔细研究了fabric1.0中的examples\chaincode\go\utxo 的例子,是可以是实现 一个chaincode由多个go文件组成的。 仿照utxo的例子,写一个实现了机构注册和机构查询的简单的功能,由2个go文件组成
积分发行与交易智能合约
hyperledger fabric 智能合约,go语言编写,实现积分发行与交易,提供如下功能:1.创建发行机构,2.获取发行机构详情,3.创建用户,4.获取用户详情,5.获取发行机构下的用户集,6.创建机构,7.获取机构详情,8.获取发行机构下的机构集,9.发行积分,10.交易积分给用户,11.交易积分,12.获取用户交易记录 临时学习的go,第一次使用go写东西,有不对的地方还请多指教。有些命名单词不准确,请见谅。但代码经过验证,fabric1.1下可安装,实例化。具体使用参考资源内说明文档。
hyperledger fabric 智能合约开发(一)------智能合约测试环境
智能合约测试环境 开发语言:进行智能合约开发是使用go语言进行开发测试。 功能设计:数据录入、数据查询、数据交易。 开发平台:windows10系统 测试平台:自建服务器Ubuntu16.04 LTS Server或者虚拟机Ubuntu16.04 DESKTOP 生产环境:阿里云BAAS服务 步骤:以下类似于链码API那节执行,再此环境对链码进行测试,可以不用搭建 退出当前目录:cd...
Java调用智能合约实战
本课程是一个系列基础教程,目标是带领读者上手实战,课程以以太坊为核心,带领到家从具体的以太坊节点部署、真实环境同步及问题、 以太坊节点json-rpc接口调用等,以及这个过程中的经验分享。
智能合约内部调用另一个智能合约
最近在看以太坊,顺便记录一下,这篇文章的目的是一个智能合约调用另一个智能合约的方法,写个demo记录一下 pragma solidity ^0.4.18; contract DataContract { mapping (address => uint256) public balanceOf; function setBlance(address _addres...
HyperLedger Fabric的合约(chaincode)调用
对区块链感兴趣,想做区块链开发,感觉HyperLedger Fabric完全无法下手的同学,可以通过本课程上道儿。
Hyperledger Fabric如何通过虚拟机部署以太坊智能合约
EVM作为用户链代码安装到Fabric中,然后可以通过它部署智能合约。单个EVM链代码足以在通道上运行多个以太坊智能合约。链码不采用以太坊的共识方法。所有事务仍将遵循Fabric事务流中的执行,订单,验证步骤。确保在不同组织中的足够对等方安装链代码,并设置一个确保一定程度的分散的认可政策。为了与已部署的智能合约进行交互,有一个fab3,它从以太坊JSON RPC API实现一组有限的API,因此可...
三、hyperledger fabric 开发第一个智能合约
一、编写智能合约代码HelloWorld.go,go语言实现,代码很简单,每个合约包含两个方法,Init、Invoke。 package main import (     "fmt"     "github.com/hyperledger/fabric/core/chaincode/shim"     "github.com/hyperledger/fabric/protos/peer" ...
基于fabric 0.6定制智能合约
fabric部署与管理 1 git地址 2 部署 3 使用chaincode fabric源码智能合约源码解析 1 go语言又称golang 2 智能合约例子 3 核心接口 定制智能合约 1 智能合约 2 编译调试目前fabric 0.6为稳定版本,fabric 1.0为最新版,并持续更新中IBM中国研究院开发的超能云(SuperVessel)平台提供了给区块链爱好者、开发者的区块链开发测试环境。通
fabric智能合约(chaincode)升级版本
基于fabric-sdk-go 1.安装chaincode对应版本func /** 安裝 */ func InstallPackage(client *channel.Client, sdk *fabsdk.FabricSDK, version string) { adminContext := sdk.Context(fabsdk.WithUser(OrgAdmin...
《HyperLedger Fabric 实战》—— 七、智能合约
《HyperLedger Fabric 实战》—— 七、智能合约 1、建立开发网络 git clone ...hyperledger/fabric-samples git checkout v1.1.0 ./scripts/bootstrap.sh cd 到将要安装二进制文件的目录 curl -sSL https://goo.gl/6wtTN5 | bash -s 1.1.0 如有问题可将地址...
Fabric智能合约编译与测试环境搭建
Fabric智能合约编译与测试环境搭建
Hyperledger Fabric 链码(智能合约)基本操作
目录 链码概念 链码操作 一.链码概念 1.基本概念 Fabric的智能合约称为链码(chaincode),分为系统链码和用户链码。系统链码用来实现系统层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的Docker容器中。 和以太坊相比,Fabric链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离,同时,链码采用...
Fabric 智能合约具体代码模板分析
Fabric的智能合约称为链码(chaincode),分为系统链码和用户链码。系统链码用来实现系统层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的Docker容器中。
智能合约部署及调用
想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!! 以太坊区块链技术2.0版本对于行业应用的开发最主要特性就是实现了智能合约,本质上讲智能合约是由事件驱动的、 具有状态的、运行在一个复制的、分享的账本之上的、且能够保管账本上资产的程序。 它是一个可以被信任,总是按照事先的规则执行的操作。但与此同时,智能合约部署完之后无法修改也会带来其他问题,这是另一个议题。下面直...
web3调用智能合约
本季视频课程是区块链系列:第一季:区块链与比特币;第二季:Solidity智能合约编程;第三季:Truffle框架与DAPP实战;第四季:HyperLedger Fabric 架构设计;第五季:区块链3.0 EOS项目实践。
hyperledger fabric 智能合约开发(六)------其他合约接口
其他合约接口 我们在开发中,还会遇到其他合约接口调用,可能不会太频繁,但会遇见。下面我来介绍一下其他合约接口开发: Package cid(import "github.com/hyperledger/fabric/core/chaincode/shim/ext/cid") func AssertAttributeValue检查属性值是否等于指定值 func AssertAttribute...
超级账本 Fabric 交易提交过程剖析
Peer 启动后会在后台执行 gossip 服务,包括若干 goroutine,实现位于 gossip/state/state.go#NewGossipStateProvider(chainID string, services *ServicesMediator, ledger ledgerResources) GossipStateProvider 方法。 其中一个协程专门负责处理收到的区块...
比特币脚本及交易分析 - 智能合约雏形
大家都有转过账,每笔交易是这样的:张三账上减¥200,李四账上加¥200。 在比特币区块链中,交易不是这么简单,交易实际是通过脚本来完成,以承载更多的功能个,这也是为什么比特币被称为是一种“可编程的货币”。 本文就来分析一下交易是如何实现可编程的。未花费的交易输出(UTXO)先引入一个概念:未花费的交易输出——UTXO(Unspent Transaction Output)其实比特币的交易都
hyperledger fabric 智能合约开发(四)------智能合约通用合约设计
智能合约通用合约设计 我们一般会在合约中定义结构体,然后序列化后存入 state 数据库中。一旦数据结构变化,就需要升级 chaincode。 下面我们只实现了 create, find, update, delete 四个方法,没有数据结构,用户自行提交 json 格式或者其他序列化后的字符串数据。 package main import ( "fmt" "github.com/hy...
JAVA 通过 web3j调用智能合约函数gas不足导致交易被回滚的解决办法
JAVA 通过 web3j调用智能合约函数gas不足会导致交易被回滚。问题现象就是调用智能合约函数后,然后再调用对应的查询函数,去查询刚才要求写入的数据,发现数据没写入成功,查询出来的都是写零或空(数字状态变量为零字符串状态变量为空)。出来办法:在JAVA代码中加载合约是设置一个很高的 gaslimit。如下面的代码设置 gaslimit 为 100万。contract2 = OrderData....
Web3j与智能合约与java
转载自: https://www.cnblogs.com/hongpxiaozhu/p/8581002.html https://www.cnblogs.com/zhangmingcheng/p/8622217.html 命令: (1)solcjs F:\HelloWorld.sol -optimize --bin --abi --output -dir F:\ --output与-di...
通过web3.js与智能合约交互
web3.js是以太坊提供的一个Javascript库,它封装了以太坊的JSON RPC API,提供了一系列与区块链交互的Javascript对象和函数,包括查看网络状态,查看本地账户、查看交易和区块、发送交易、编译/部署智能合约、调用智能合约等,其中最重要的就是与智能合约交互的API....
fabric合约开发ppt
ibm区块链hyperledger学习ppt,讲解hyperledger fabric
Go 语言与智能合约调用
2017年由于比特币的疯狂上涨,让大家见识到了其背后技术区块链的能量。比特币是区块链的第一个产品,代表了区块链1.0时代的到来。而以太坊则代表了区块链2.0时代的到来,以太坊比比特币的改进地方就是在区块链上还可以编程!这个区块链上运行的代码我们给它叫做智能合约!而基于以太坊平台的 ICO 模式,更是让人热血沸腾。同时由于以太坊的 Geth 是基于 Go 编写的,那么 Go 语言名正言顺的成为了区块...
如何部署、调用智能合约
RPC 之前的章节中我们看到了怎么写、部署合约以及与合约互动。现在该讲讲与以太坊网络和智能合约沟通的细节了。 一个以太坊节点提供一个RPC界面。这个界面给Ðapp访问以太坊区块链的权限和节点提供的功能,比如编译智能合约代码,它用JSON-RPC 2.0规范(不支持提醒和命名的参数) 的子集作为序列化协议,在HTTP和IPC (linux/OSX上的unix域接口,在Windows上叫pipe’...
区块链智能合约调用变量
pragma solidity ^0.4.18;rn rncontract Auction rn event newBid();rn address owner;rn address public leader;rn address public winner;rn string public item;rn uint public leadingBid;rn rn function Auction(string name, uint price) public rn owner = msg.sender;rn item = name;rn leadingBid = price;rn rn function placeBid() payable publicrn if (msg.value > leadingBid) rn returnPrevBid();rn leader = msg.sender;rn leadingBid = msg.value;rn emit newBid();rn rn rn function returnPrevBid() privatern if (leader != 0) rn leader.transfer(leadingBid);rn rn rn function endAuction() public rn if (msg.sender == owner) rn winner = leader;rn owner.transfer(leadingBid);rn rn rnrnrn请问如何在一个新合约中调用上面这个拍卖合约的 leadingBid 这个变量的结果(在上面合约执行之后)?如果不能,能不能从区块中读取这个变量?很急很急,回答的好可以追加,谢谢。是调用变量,不是函数调用。就算调用getleadingBid函数也不能在另外一个合约返回变量leadingBid的值。
Fabric交易的共识流程
目录 一、概述 二、共识流程 (一)提议阶段 (二)打包阶段 (三)验证阶段 三、小结 一、概述 Fabric中提供了Orderer排序节点,作为区块链网络的一种共识机制,提供对交易进行排序的服务。目前,Fabric已发布的版本中提供了一种基于崩溃容错(Crash Fault-Tolerant, CFT)等排序机制。这种机制是通过Kafka实现的,后续版本中会提供基于Raft共识的...
Fabric 交易数据结构
{ header: { number: { low: 462, high: 0, unsigned: true }, previous_hash: "a499b9c90cc8f4dfea0d4fcfbfaad7b57ea66a61afc58d2d10d98002e4
使用nodejs编译智能合约,部署合约,调用合约
使用nodejs编译智能合约 nodejs环境搭建,自行百度解决 新建工程 新建项目工程文件夹,进入文件夹 在`cmd`里使用`npm install solc` 智能合约,以下提供一个简单的智能合约 使用nodejs编译智能合约 将智能合约部署到私链上 使用nodejs,web3访问智能合约 具体步骤一共分为以上几步。 手把手一步一步...
Fabric Java SDK 1.4 快速入门
Fabric-sdk-java的文档不容易理解。本文将尝试编写 一个最简单的可以访问Fabric链码的Java应用,来帮助你快速上手Farbic区块链 的Java应用开发。
智能合约不智能
作者:井通科技CTO 杨建新 区块链概念从2015年起源,截止目前为止已经如火如荼的发展了大概2年多。比特币是区块链的发源,从比特币产生了区块链的众多概念,其中有个重要的概念是智能合约。 智能合约原是Nick Szabo在1994年他的论文《智能合约》(Smart Contract)中首次提出智能合约的概念,Nick对智能合约的描述是“highly evolved practi
智能合约
What? 条件交易 样子? 怎样编写? 那里执行? 存在哪个节点? 以太坊的结构 账户 Contract Accounts External Owned Accounts Recipent 交易发出方的签名 wei message to a contract STARTGAS(最大步数) GASPRICE(计算费) 操作 奖励机制(incentive model) 创建区块 ...
区块链智能合约开发笔记——stateRoot,nonce值,Hyperledger Fabric,联盟链智能合约
问题1:为什么要有stateRoot? stateRoot指的是状态树根节点的Hash值。每个区块上都包含这样的一个状态结点,方便节点间状态的互相验证,保证在交易的每个区块且每时每刻,所有节点的状态是一致的。 问题2:nonce值有什么用? 交易中的Nonce值指的是from账户发出交易的次数,同一账户的交易会被依次确认。区块中的nonce值是用于挖矿,这是为了证明工作量的无意义的值,这个值将决定...
以太坊的合约调用和交易执行
合约部署到以太坊的区块链上后,是为了让用户调用和执行的。与合约创建一样,合约的执行也是由交易驱动的,如图: 对于驱动合约执行的交易,有几个关键点: 1、合约在创建时,会生成一个合约地址,所以,通过交易调用合约的时候,就以合约地址为目的地址; 2、在交易的data域,会标明要调用合约的哪个函数,并且提供了该函数所需要的参数; 3、调用合约的交易,同样可以发送一笔以太币给合约,金额在v...
你的第一个智能合约——智能合约教程
你知道如果编辑自己的智能合约吗?这是我的第一篇教程 ——可以发现的干货在上一篇博客中,我们已经介绍了,Dapp开发其实就是前端+合约的开发模式,那么在我们已经掌握html+css+js的基础中,最重要的就是我们要学会如何学习智能合约的编写第一,你要了解我们所使用的测试合约和编辑合约的软件,作为最方便快捷的方式我们采用remix:http://remix.ethereum.org/第二,在remix
Cypherium Java 智能合约编程指南
代币就是数字货币,比特币、以太币就是一个代币。利用Cypherium的java智能合约可以轻松编写出属于自己的代币。这些代币是建立在区块链之上,代表你拥有并可转让给其他人的数字资产。现在我们就来看看怎样创建一个这样的代币。 准备工作: 下载示例代码。https://github.com/cypherium/ContractExample 目录结构介绍: ├── client ...
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件