
先区分授权、记录与执行
区块链日常应用涉及哪些技术概念,可以围绕三个问题理解:谁有权操作,系统记录什么变化,以及变化必须满足哪些规则。数字签名、交易和智能合约分别帮助回答这些问题,但不同区块链的实现方式并不相同。
私钥、签名与地址:操作权限从哪里来
比特币开发文档通过公钥哈希支付示例说明:花费已有输出时,需要提供满足脚本条件的数据,其中包括公钥和数字签名。验证者据此检查授权,无需取得签名者的私钥。
地址、签名和身份不能混为一谈。地址用于表达接收目标,签名用于验证相应授权;有效签名本身并不能证明操作者的真实姓名,也不能证明操作背后的现实业务真实。
交易与UTXO:余额如何形成
在比特币的普通交易中,输入引用之前的输出,新的输出则可以成为后续交易的花费对象。尚未被花费的输出称为UTXO,钱包显示的余额可以由多个UTXO汇总形成。
因此,界面上的一个余额数字,背后可能对应多条可用记录。理解这一点,有助于区分钱包的展示方式和底层数据结构;这一模型也不能直接套用到所有区块链。
智能合约与Gas:规则如何执行
以太坊文档将智能合约解释为部署在特定地址上的代码与状态。用户提交交易可以调用其功能,合约也可以调用其他合约。部署与链上执行涉及Gas,用于计量计算资源消耗。
这类机制适合描述能够明确编码的条件。例如,一项权限是否可以变更,需要先把允许变更的条件写清楚。程序能够执行规则,但规则是否完整、是否符合业务目标,仍取决于设计。
预言机与多重签名:外部数据和共同授权
智能合约不能自行读取链外事件,外部信息需要通过预言机等机制引入。多重签名则要求达到约定数量的有效签名后才能执行操作,适用于需要共同授权的场景。
二者解决的问题不同:前者提供数据,后者组织权限。引入外部数据后,仍需考虑数据是否可靠;采用共同授权后,也仍需明确参与者、签名门槛和权限安排。
常见问题:上链是否等于真实可靠
链上规则可以检查签名、花费条件或程序执行条件,却不能仅凭记录就确认现实物品的真伪、服务是否完成。因此,涉及现实业务时,需要分别理解链上验证与链外核实。
智能合约自动执行也不代表代码一定正确。判断一项应用能做什么,应看它实际验证了哪些条件、依赖哪些外部信息,以及谁拥有操作权限。