超级账本hyperledger fabric第九集:账户相关链码

Init()方法与例子程序类似;

Invoke()方法包含 query  invoke  set  get;

  • 编写完成后,拖到linux对应目录
package main

import (
	"github.com/hyperledger/fabric/core/chaincode/shim"
	pb "github.com/hyperledger/fabric/protos/peer"
	"strconv"
	"fmt"
)

type PaymentChaincode struct {
}

//初始化方法
//-c '{"Args":["init","第一个账户名","第一个账户余额",XXXXXX]}'
func (p *PaymentChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
	_, args := stub.GetFunctionAndParameters()
	if len(args) != 4 {
		return shim.Error("必须是4个参数")
	}
	var err error
	//拿到参数转换
	_, err = GetArgsState(args[1])
	if err != nil {
		return shim.Error("第一个账户的金额错误")
	}
	_, err = GetArgsState(args[3])
	if err != nil {
		return shim.Error("第二个账户的金额错误")
	}
	//将初始化数据存到账本中
	//持久化
	err = stub.PutState(args[0], []byte(args[1]))
	if err != nil {
		return shim.Error("第一个账户保存失败")
	}
	err = stub.PutState(args[2], []byte(args[3]))
	if err != nil {
		return shim.Error("第二个账户保存失败")
	}
	fmt.Println("初始化成功")
	return shim.Success(nil)

}

//参数转换
//字符串转数字
func GetArgsState(value string) (int, error) {
	v, err := strconv.Atoi(value)
	if err != nil {
		return 0, err
	}
	return v, err
}

//链码交互的入口
func (p *PaymentChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
	//接收方法名
	fun, args := stub.GetFunctionAndParameters()
	//判断方法入口
	if fun == "query" {
		return query(stub, args)
	} else if fun == "invoke" {
		return invoke(stub, args)
	} else if fun == "set" {
		return set(stub, args)
	} else if fun == "get" {
		return get(stub, args)
	} else {
		re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值