加密交易概念(二)支付处理器的实现

一、状态(state)和状态转换 (state transition)

  状态(state): 二进制的的0101010 可以用来表示某些事物的状态;

  状态转换函数(state transition function):反映一个时刻移动到另外一个时刻;

      通过获取一个输入和一个状态,来返回一个新的状态,即下一个状态;

f(state, input){
  return new state‘  
}

  创世区块 genesis state 

Object { }

  第一个状态, 类型 铸币

 

 

 

  第二个状态, 类型 发送

 

  交易函数

apply_transcation(state, transction){
  // Check the tx signature
  // Check the nonce
  // Apply 'mint' or 'send' tx
 return new state
}

     有两种交易类型, 铸币 和 发送

  铸币 只能由中央支付处理器创建;

 

    检查签名 check the tx signature :

const signer = EthCrypto.recover(tx.sig, getTxHash(tx.contents))
if(signer !== tx.contents.from){
   throw new Error('Invalid signature!')
}

   检查随机数, check the nonce

if(tx.contents.nonce != state[[tx.contents.from]].nonce){
   throw new Error('Invalid nonce!')
}

    铸币 和 发送

复制代码
if(tx.contents.type == 'mint' && tx.contents.from == accounts.paymentProcessor.address){
  state[[tx.contents.to]].balance += tx.contents.amount
}else if(tx.contents.type == 'send'){
if(state[[tx.cocntents.form]].balance - tx.contents.acount<0){
throw new Error('Not enough money!')
  }
state[[tx.contents.from]].balance -= tx.content.amount
.....
}
复制代码

    铸币的第一个状态

 

 

    发送的第二状态

 

 

 

 v

  

 

  

posted @   apeNote  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示