加密交易概念(二)支付处理器的实现
一、状态(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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现