fabric shim安装合约_hyperledger fabric 开发第一个智能合约
一、编写智能合约代码HelloWorld.go,go语言实现,代码很简单,每个合约包含两个方法,Init、Invoke。
package main
import (
"fmt"
"github.com/hyperledger/fabric/core/chaincode/shim"
"github.com/hyperledger/fabric/protos/peer"
)
type Helloworld struct {
}
func (t * Helloworld) Init(stub shim.ChaincodeStubInterface) peer.Response{
args:= stub.GetStringArgs()
err := stub.PutState(args[0],[]byte(args[1]))
if err != nil {
shim.Error(err.Error())
}
return shim.Success(nil)
}
func (t *Helloworld) Invoke (stub shim.ChaincodeStubInterface) peer.Response{
fn, args := stub.GetFunctionAndParameters()
if fn =="set" {
return t.set(stub, args)
}else if fn == "get"{
return t.get(stub , args)
}
return shim.Error("Invoke fn error")
}
func (t *Helloworld) set(stub shim.ChaincodeStubInterface , args []string) peer.Response{
err := stub.PutState(args[0],[]byte(args[1]))
if err != nil {
return shim.Error(err.Error())
}
return shim.Success(nil)
}
func (t *Helloworld) get (stub shim.ChaincodeStubInterface, args [] string) peer.Response{
value, err := stub.GetState(args[0])
if err != nil {
return shim.Error(err.Error())
}
return shim.Success(value)
}
func main(){
err := shim.Start(new(Helloworld))
if err != nil {
fmt.Println("start error")
}
}
二、将代码文件夹拷贝到fabric-samples下面的chaincode文件夹
三、进入到fabric-samples/chaincode-docker-devmode,启动网络
docker-compose -f docker-compose-simple.yaml up
四、新开一个终端,编译链码,并启动
docker exec -it chaincode bash
cd hello/
go build
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./hello
五、新开一个终端,进入docker容器,操作链码
docker exec -it cli bash
安装链码
peer chaincode install -p chaincodedev/chaincode/hello -n mycc -v 0
实例化链码
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["str","HelloWorld"]}' -C myc
查询链码
peer chaincode query -n mycc -c '{"Args":["get","str"]}' -C myc
修改链码
peer chaincode invoke -n mycc -c '{"Args":["set","str","newHelloWorld"]}' -C myc
再次查询
至此,第一个智能合约demo完成了。
声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com
fabric shim安装合约_hyperledger fabric 开发第一个智能合约相关推荐
- c++ eos智能合约开发_hyperledger fabric 开发第一个智能合约
本文作者:陈俊飞 一.编写智能合约代码HelloWorld.go,go语言实现,代码很简单,每个合约包含两个方法,Init.Invoke. package mainimport ("fmt& ...
- 第一章 智能合约开发-第一个智能合约项目
前言 想必能看到这篇文章的小伙伴肯定是对区块链和以太坊有所了解了,在这就不再赘述智能合约的背景和用途,本文直接上干货--如何开发以太坊上的智能合约. 技术栈 编辑器 VSCode 官网地址:Visua ...
- 电报注册网络代理_如何在电报开放网络(TON)中开发和发布智能合约
电报注册网络代理 这篇文章是关于什么的? (What is this article about?) In this article, I will tell about my participati ...
- Solidity入门:我的第一段智能合约
以太坊是一个全球性的.去中心化的金融和新型应用程序平台.在以太坊,我们可以通过智能合约代码来控制资产,并建立世界上任何地方皆可访问的应用程序.今天我们自己动手来写一段简单的智能合约代码,探索一下智能合 ...
- 用Visual Studio开发以太坊智能合约
2019独角兽企业重金招聘Python工程师标准>>> 区块链和以太坊 自从我熟悉区块链.以太坊和智能合约以来,一直失眠. 我一直在阅读,阅读和阅读,最后我能够使用一些工具,他们建议 ...
- java和以太坊交互_java类库web3j开发以太坊智能合约快速入门
web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...
- 使用hardhat开发以太坊智能合约-测试合约
Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...
- 使用hardhat 开发以太坊智能合约-验证合约
Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...
- python智能合约编程_如何用Python Flask开发以太坊智能合约
将数据存储在数据库中是任何软件应用程序不可或缺的一部分.无论如何控制该数据库都有一个该数据的主控.区块链技术将数据存储到区块链网络内的区块中.因此,只要某个节点与网络同步,它们就会获得区块中数据的副本 ...
最新文章
- 2021潍坊市高考成绩查询,潍坊2021高考成绩排名榜单,潍坊各高中高考成绩喜报
- 我端午节又来免费送书了!
- 【认知无线网络】认知无线网络基础知识学习
- CAN 通信协议文档集锦
- NABCD模型--软件工程
- oracle 丢失msvcr71,安装oracle10G 即时客户端 instant client时msvcr71.dll缺失问题解决
- 500行代码,教你用python写个微信飞机大战
- 大三计算机组成原理深度学习——机器字长、存储单元、存储字长、存储容量,存储体的概念
- 阿里云香港服务器解析后域名无法访问
- 大数据小项目之电视收视率企业项目05
- 选择勤哲Excel服务器做企业管理系统ERP的经验之谈
- c语言电脑三点竖怎么输入,竖怎么打
【处理步骤】
- 参数估计之 最大似然估计法
- AD更改原理图纸大小
- CSS中的nth-child和nth-of-type选择器
- 计蒜客习题:骑车比赛
- UPC豁免流程精讲!你与大卖的距离,就在这里!
- git提交代码到github gitbash
- remote: Support for password authentication was removed on August 13, 2021
- 裁员、年终奖减半:在公司打工,你永远不知道意外和明天哪个先来
热门文章
- FFmpeg示例程序合集-批量编译脚本
- 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
- 解决 : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
- 灼灼夏日 - 遥思故乡 - 赤子无相忘
- 学习	shell脚本之前的基础知识
- python 发送邮件的两种方式【终极篇】
- #python计算结果百位500向下取整,(0-499取000,500-999取500)
- 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...
- HTML5 SVG
- python3字符串属性(二)