一、编写智能合约代码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 开发第一个智能合约相关推荐

  1. c++ eos智能合约开发_hyperledger fabric 开发第一个智能合约

    本文作者:陈俊飞 一.编写智能合约代码HelloWorld.go,go语言实现,代码很简单,每个合约包含两个方法,Init.Invoke. package mainimport ("fmt& ...

  2. 第一章 智能合约开发-第一个智能合约项目

    前言 想必能看到这篇文章的小伙伴肯定是对区块链和以太坊有所了解了,在这就不再赘述智能合约的背景和用途,本文直接上干货--如何开发以太坊上的智能合约. 技术栈 编辑器 VSCode 官网地址:Visua ...

  3. 电报注册网络代理_如何在电报开放网络(TON)中开发和发布智能合约

    电报注册网络代理 这篇文章是关于什么的? (What is this article about?) In this article, I will tell about my participati ...

  4. Solidity入门:我的第一段智能合约

    以太坊是一个全球性的.去中心化的金融和新型应用程序平台.在以太坊,我们可以通过智能合约代码来控制资产,并建立世界上任何地方皆可访问的应用程序.今天我们自己动手来写一段简单的智能合约代码,探索一下智能合 ...

  5. 用Visual Studio开发以太坊智能合约

    2019独角兽企业重金招聘Python工程师标准>>> 区块链和以太坊 自从我熟悉区块链.以太坊和智能合约以来,一直失眠. 我一直在阅读,阅读和阅读,最后我能够使用一些工具,他们建议 ...

  6. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门

    web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...

  7. 使用hardhat开发以太坊智能合约-测试合约

    Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...

  8. 使用hardhat 开发以太坊智能合约-验证合约

    Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...

  9. python智能合约编程_如何用Python Flask开发以太坊智能合约

    将数据存储在数据库中是任何软件应用程序不可或缺的一部分.无论如何控制该数据库都有一个该数据的主控.区块链技术将数据存储到区块链网络内的区块中.因此,只要某个节点与网络同步,它们就会获得区块中数据的副本 ...

最新文章

  1. 2021潍坊市高考成绩查询,潍坊2021高考成绩排名榜单,潍坊各高中高考成绩喜报
  2. 我端午节又来免费送书了!
  3. 【认知无线网络】认知无线网络基础知识学习
  4. CAN 通信协议文档集锦
  5. NABCD模型--软件工程
  6. oracle 丢失msvcr71,安装oracle10G 即时客户端 instant client时msvcr71.dll缺失问题解决
  7. 500行代码,教你用python写个微信飞机大战
  8. 大三计算机组成原理深度学习——机器字长、存储单元、存储字长、存储容量,存储体的概念
  9. 阿里云香港服务器解析后域名无法访问
  10. 大数据小项目之电视收视率企业项目05
  11. 选择勤哲Excel服务器做企业管理系统ERP的经验之谈
  12. c语言电脑三点竖怎么输入,竖怎么打 【处理步骤】
  13. 参数估计之 最大似然估计法
  14. AD更改原理图纸大小
  15. CSS中的nth-child和nth-of-type选择器
  16. 计蒜客习题:骑车比赛
  17. UPC豁免流程精讲!你与大卖的距离,就在这里!
  18. git提交代码到github gitbash
  19. remote: Support for password authentication was removed on August 13, 2021
  20. 裁员、年终奖减半:在公司打工,你永远不知道意外和明天哪个先来

热门文章

  1. FFmpeg示例程序合集-批量编译脚本
  2. 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
  3. 解决 : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
  4. 灼灼夏日 - 遥思故乡 - 赤子无相忘
  5. 学习 shell脚本之前的基础知识
  6. python 发送邮件的两种方式【终极篇】
  7. #python计算结果百位500向下取整,(0-499取000,500-999取500)
  8. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...
  9. HTML5 SVG
  10. python3字符串属性(二)