区块链的基本特性，共识算法，虚拟机，智能合约
其中，区块链中支持的共识算法可以包括：
第一类共识算法，即节点设备需要争夺每一轮的记账周期的记账权的共识算法；例如，工作量证明(Proof of Work，POW)、股权证明(Proof of Stake，POS)、委任权益证明(Delegated Proof of Stake，DPOS)等共识算法；
如上所述，无论区块链采用以上示出的哪种共识算法，本轮的记账节点都可以将接收到的交易打包以生成最新区块，并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。
如果其它节点设备接收到最新区块或者该最新区块的区块头后，经验证没有问题，可以将该最新区块追加到原有的区块链末尾，从而完成区块链的记账过程。
在实际应用中，不论是公有链、私有链还是联盟链，都可能提供智能合约(smartcontract)的功能。
区块链上的智能合约是在区块链上可以被交易触发执行的合约。
以以太坊为例，支持用户在以太坊网络中创建并调用一些复杂的逻辑。
以太坊作为一个可编程区块链，其核心是以太坊虚拟机(EVM)，每个以太坊节点都可以运行EVM。
如图1所示，Bob将一笔包含创建智能合约信息的交易(transaction)发送到以太坊网络后，各节点均可以在EVM中执行这笔交易。
智能合约创建后，区块链上出现一个与该智能合约对应的合约账户，并拥有一个特定的地址；比如，图1中各节点中的“0x68e12cf284…”前述提到，包含创建智能合约的交易的Data字段保存的可以是该智能合约的字节码。
以Solidity语言为例，用其编写的合约代码与面向对象编程语言中的类(Class)很相似，在一个合约中可以声明多种成员，包括状态变量、函数、函数修改器、事件等。
如图2所示，仍以以太坊为例，Bob将一笔包含调用智能合约信息的交易发送到以太坊网络后，各节点均可以在EVM中执行这笔交易。
智能合约可以以规定的方式在区块链网络中每个节点独立的执行，所有执行记录和数据都保存在区块链上，所以当这样的交易执行完毕后，区块链上就保存了无法篡改、不会丢失的交易凭证。
创建智能合约和调用智能合约的示意图如图3所示。
智能合约的事件机制，是智能合约与链外实体进行交互的一种方式。
智能合约在调用的过程中产生的调用结果(包括中间结果和最终的调用结果)，通常都会以事件(event)的形式，记录到调用该智能合约的那笔交易的交易日志(transaction logs)，在节点设备的存储空间中进行存储。
而需要与智能合约进行交互的链外实体，则可以通过监听节点设备的存储空间中存储的上述交易日志的方式，来获取智能合约的调用结果；
而与智能合约进行交互的链外实体，可以监听节点设备的存储空间中存储的MPT收据树上的交易收据，并从监听到的交易收据中，来获取智能合约生成的事件。
在跨链场景下，多个区块链可以通过跨链中继实现跨链对接。
其中，跨链中继，可以通过桥接接口与多个区块链分别进行对接，并基于实现的数据搬运逻辑，完成该多个区块链之间的跨链数据同步。
在实现上述跨链中继时所采用的跨链技术，在本说明书中不进行特别限定；例如，在实际应用中，可以通过侧链技术、公证人技术等跨链机制，将多个区块链连接起来。
当多个区块链通过跨链中继实现对接之后，区块链之间就可以去读取并认证其它区块链上的数据，也可以通过跨链中继去调用其它区块链上部署的智能合约。
需要说明的是，跨链中继仅用于多个区块链之间搬运数据，并不需要对搬运的数据进行持久化存储，也不需要维护所搬运的数据的数据状态。
区块链上部署的智能合约，通常只能引用区块链上存储的数据内容；而在实际应用中，对基于智能合约技术实现的一些复杂的业务场景，智能合约可能还需要引用一些链外的数据实体上的外部数据。
在这种场景下，区块链上部署的智能合约，可以通过Oracle预言机，来引用链外的数据实体上的数据，进而实现智能合约与真实世界的数据实体之间的数据交互。
需要说明的是，跨链中继用于连接两个区块链，而Oracle预言机用于连接区块链与链外的数据实体，实现区块链与真实世界的数据交互。
在实际应用中，在为区块链上的智能合约部署预言机时，可以先在区块链上部署一个与预言机对应的预言机智能合约；其中，该预言机智能合约用于维护预言机发给区块链上的智能合约的外部数据；例如，预言机发给区块链上的智能合约的外部数据，可以存储在预言机智能合约的账户存储空间中。
当区块链上的目标智能合约被调用时，可以从该预言机智能合约的账户存储空间中，来读取该目标智能合约所需的外部数据，来完成智能合约的调用过程。
需要说明的是，预言机在向区块链上的智能合约发送外部数据时，可以采用主动发送的方式，也可以采用被动发送的方式。
在一种实现方式中，链外的数据实体可以将需要提供给目标智能合约的外部数据，利用预言机的私钥进行签名后，发送给上述预言机智能合约；例如，在时间时，可以采用周期性发送的方式，将签名后的上述外部数据发送给上述预言机智能合约；
在另一种实现方式中，当区块链上的目标智能合约被调用时，如果从该预言机智能合约的账户存储空间中，并未读取到该目标智能合约所需的外部数据，此时该预言机智能合约，可以利用智能合约的事件机制，与上述预言机进行交互，并由上述预言机将该目标智能合约所需的外部数据，发送至该预言机智能合约的账户存储空间中。
例如，当区块链上的目标智能合约被调用时，如果从该预言机智能合约的账户存储空间中，并未读取到该目标智能合约所需的外部数据，此时该预言机智能合约，可以生成一个外部数据获取事件，并将该外部数据获取事件记录到调用该智能合约的那笔交易的交易日志中，并将该交易日志存储到节点设备的存储空间；而上述预言机可以监听节点设备的存储空间中存储的该预言机智能合约产生的交易日志，并在监听到交易日志中的外部数据获取事件后，响应监听到的该外部数据获取事件，将上述目标智能合约所需的外部数据，发送给上述预言机智能合约。