
区块与共享账本
区块链可以理解为由多个节点共同维护的记录结构。以比特币为例,交易被组织进区块,区块按顺序连接,形成可供节点验证的交易记录。完整节点会依据规则独立检查区块;多个节点接受相同的有效区块,是账本保持一致的基础。
区块中保存前一区块的哈希信息,交易数据也可通过哈希汇总为默克尔根。哈希有助于发现记录是否被改动,默克尔树则支持验证某笔交易是否包含在区块中。但这不等于所有链上数据都天然真实:技术能够帮助核对记录的一致性,不能单独证明录入信息所描述的现实事件属实。

交易验证与共识机制
共享账本需要规则来判断哪些交易和区块有效。比特币使用未花费交易输出作为交易输入,同一输出不能在有效链上被重复花费,这是防止双重支付的重要环节。节点还要检查区块是否符合共识规则,不能仅凭有人发布一条记录就承认它。

比特币采用工作量证明:生成区块需要完成符合要求的哈希计算,试图改写历史记录也会面临重新完成相关工作的成本。工作量证明是具体网络采用的一种机制,讨论其他区块链应用时,应先确认其实际使用的验证与共识规则,不能把比特币的做法视为所有区块链的统一设计。
智能合约与链上执行
智能合约是部署在区块链上的程序。以太坊中的合约包含代码和状态,用户可通过交易调用其功能;程序按预设逻辑检查条件并更新状态。这让部分规则能够在链上执行,但执行效果仍取决于代码是否正确,以及调用是否满足规定条件。
部署和调用合约会产生链上执行成本。合约也可以调用其他合约,从而组合已有功能。与此同时,合约本身无法直接取得链外事件的信息;需要使用外部数据时,还须考虑数据如何进入链上,以及数据来源是否可靠。多重签名合约则展示了另一类控制方式:指定操作须获得多方有效签名,才能执行。
适用条件与常见问题
判断某项应用是否适合使用区块链,首先要明确参与者是否需要共同核对记录,以及哪些操作需要由网络规则或链上程序验证。若业务依赖现实世界的信息,还应区分“链上记录可验证”和“链外信息可信”这两个问题。涉及合约的应用,也需要关注代码逻辑、权限安排与执行成本。
常见疑问是:上链后还能修改吗?在比特币所示的区块连接结构中,改动既有交易会影响相关区块及后续区块的验证,因此不能像编辑普通数据库记录那样直接修改已被接受的历史。另一个疑问是:智能合约能否自动处理任何现实事件?不能。它只能依据可获得的链上输入执行;链外事件要影响合约,必须先通过相应方式把信息提供给它。