NFT數字藏品系統開發原始碼部署丨NFT鏈遊元宇宙遊戲系統開發原始碼搭建

Tg_StPv888發表於2023-02-02

什麼是NFT?
在我看來,NFT是Web3世界中標記資料資產獨特性的標識,是資料權益的載體。不論是數字化的畫作,桌椅、服裝、汽車飛機等(有實物的),還是數字化的身份憑證、產權、公司品牌等(邏輯產物)都可以是NFT。

獨特性的標識為什麼這麼重要呢?因為它能將其指代的物品和其他同類物品區分開。 為了進一步理解,首先要明確,有些物品是非同質的(Non-Fungible)需要被區分開的,例如房屋產權和藝術作品。有些物品是同質的,不需要被區分開,例如人民幣和app積分,儘管有不同的編碼,但編碼不影響互相替換,因為面值一樣;其次要區分開標識和標的物,標的物可以是區塊鏈上原生的資料或者本身是數字化的,也可以是物理世界實際存在的物品,標識則是標的物在數字世界中的對映。

 

  業務邏輯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)

 

  }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70016646/viewspace-2933741/,如需轉載,請註明出處,否則將追究法律責任。

相關文章