首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >智能合约DAPP系统开发代码流程部署方案

智能合约DAPP系统开发代码流程部署方案

原创
作者头像
系统_I8O28578624
发布2023-02-01 16:29:39
发布2023-02-01 16:29:39
3690
举报
文章被收录于专栏:YYDSYYDS

  业务逻辑invoke函数实现了业务逻辑中的资产转移,将A的资产转移X个单位给B。

  //将A的资产转移X个单位给B的交易

  //invoke实现了两个键之间的value转移,输入参数为KEY1_NAME,KEY2_NAME,VALUE

  func(t*SimpleChaincode)invoke(stub shim.ChaincodeStubInterface,args[]string)peer.Response{

  var A,B string//Entities

  var Aval,Bval int//Asset holdings

  var X int//Transaction value

  var err error

  if len(args)!=3{

  return shim.Error("Incorrect number of arguments.Expecting 3")

  }

  A=args[0]

  B=args[1]

  //获取A、B的当前资产情况

  Avalbytes,err:=stub.GetState(A)

  if err!=nil{

  return shim.Error("Failed to get state")

  }

  if Avalbytes==nil{

  return shim.Error("Entity not found")

  }

  Aval,_=strconv.Atoi(string(Avalbytes))

  Bvalbytes,err:=stub.GetState(B)

  if err!=nil{

  return shim.Error("Failed to get state")

  }

  if Bvalbytes==nil{

  return shim.Error("Entity not found")

  }

  Bval,_=strconv.Atoi(string(Bvalbytes))

  //执行

  X,err=strconv.Atoi(args[2])

  if err!=nil{

  return shim.Error("Invalid transaction amount,expecting a integer value")

  }

  //业务逻辑:实现资产的转移

  Aval=Aval-X

  Bval=Bval+X

  fmt.Printf("Aval=%d,Bval=%dn",Aval,Bval)

  //将更新后的资产更新到账本中

  err=stub.PutState(A,[]byte(strconv.Itoa(Aval)))

  if err!=nil{

  return shim.Error(err.Error())

  }

  err=stub.PutState(B,[]byte(strconv.Itoa(Bval)))

  if err!=nil{

  return shim.Error(err.Error())

  }

  return shim.Success(nil)

  }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档