DAPP代币质押合约模式系统开发详情

257 阅读1分钟

  实际上是区块链的程序,系统I81-开发2591-搭建3365多方同意按照智能合约的代码执行,并对资产进行处置和分配。

从数据角度看智能合约:

  数据库的存储过程

  日志(交易)

  区块链相当于数据库的数据总和

  从区块链角度上看:

  运行在区块链以及全局状态的程序

  确定性,单线程程序

  确定行的程序在所有节点上运行的结果是一样的、

  获取数据及全局状态,执行程序,修改数据及全局状态,通过日志来保证数据的唯一性(这里采用分布式共识来保证日志的顺序也就保证了数据的唯一性)

  复制代码func submitTransaction(ctx context.Context,b Backend,tx*types.Transaction)(common.Hash,error){

  if err:=b.SendTx(ctx,tx);err!=nil{//提交交易

  return common.Hash{},err

  }

  if tx.To()==nil{//交易成功后,交易的目标地址是空的话,说明是智能合约部署

  signer:=types.MakeSigner(b.ChainConfig(),b.CurrentBlock().Number())

  from,err:=types.Sender(signer,tx)//获取交易的发送地址

  if err!=nil{

  return common.Hash{},err

  }

  addr:=crypto.CreateAddress(from,tx.Nonce())//利用发送地址和nonce生成新的地址

  log.Info("Submitted contract creation","fullhash",tx.Hash().Hex(),"contract",addr.Hex())

  }else{

  log.Info("Submitted transaction","fullhash",tx.Hash().Hex(),"recipient",tx.To())

  }

  return tx.Hash(),nil