DAPP循环矩阵互助公排系统开发
实际上是区块链的程序,【18I合约-259l开发3365】多方同意按照智能合约的代码执行,并对资产进行处置和分配。
从数据角度看智能合约:
数据库的存储过程
日志(交易)
区块链相当于数据库的数据总和
从区块链角度上看:
运行在区块链以及全局状态的程序
确定性,单线程程序
确定行的程序在所有节点上运行的结果是一样的、
获取数据及全局状态,执行程序,修改数据及全局状态,通过日志来保证数据的性(这里采用分布式共识来保证日志的顺序也就保证了数据的性)
复制代码func submitTransaction(ctx co***ntext,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生成新的地址
lo***("Submitted contract creation","fullhash",tx.Hash().Hex(),"contract",addr.Hex())
}else{
lo***("Submitted transaction","fullhash",tx.Hash().Hex(),"recipient",tx.To())
}
return tx.Hash(),nil
从数据角度看智能合约:
数据库的存储过程
日志(交易)
区块链相当于数据库的数据总和
从区块链角度上看:
运行在区块链以及全局状态的程序
确定性,单线程程序
确定行的程序在所有节点上运行的结果是一样的、
获取数据及全局状态,执行程序,修改数据及全局状态,通过日志来保证数据的性(这里采用分布式共识来保证日志的顺序也就保证了数据的性)
复制代码func submitTransaction(ctx co***ntext,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生成新的地址
lo***("Submitted contract creation","fullhash",tx.Hash().Hex(),"contract",addr.Hex())
}else{
lo***("Submitted transaction","fullhash",tx.Hash().Hex(),"recipient",tx.To())
}
return tx.Hash(),nil