智能合约-区块链基础

140 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

区块链基础

区块链作为一个概念对于程序员来说并不难理解。原因是大多数复杂性(挖掘、散列、 椭圆曲线密码学、 点对点网络等)只是为了为平台提供一组特定的功能和承诺。一旦您接受了这些给定的功能,您就不必担心底层技术

Transactions(交易)

区块链是一个全球共享的交易数据库。这意味着每个人都可以通过参与网络来读取数据库中的条目。如果要更改数据库中的某些内容,则必须创建一个必须被所有其他人接受的所谓事务。事务一词意味着您要进行的更改(假设您要同时更改两个值)要么根本没有完成,要么完全应用。此外,当您的事务被应用到数据库时,没有其他事务可以更改它。

Blocks(块)

要克服的一个主要障碍是(用比特币术语)所谓的“双花攻击”:如果网络中存在两个交易都想清空账户会发生什么?只有一个交易可以是有效的,通常是最先被接受的交易。问题是“第一”在点对点网络中并不是一个客观的术语。 对此的抽象答案是您不必关心。将为您选择全球接受的交易顺序,解决冲突。交易将被捆绑到所谓的“块”中,然后它们将在所有参与节点之间执行和分发。如果两笔交易相互矛盾,则最终成为第二笔的交易将被拒绝,并且不会成为区块的一部分。

这些块在时间上形成一个线性序列,这就是“区块链”这个词的来源。区块以相当固定的间隔添加到链中——对于以太坊来说,这大约是每 17 秒一次。

作为“订单选择机制”(称为“挖矿”)的一部分,可能会不时恢复块,但仅在链的“末端”。在特定块之上添加的块越多,该块被还原的可能性就越小。因此,您的交易可能会被还原甚至从区块链中删除,但是您等待的时间越长,它就越不可能。

** **### 交易不能保证包含在下一个区块或任何特定的未来区块中,因为它不取决于交易的提交者,而是取决于矿工来确定交易包含在哪个区块中。

### 如果您想安排合约的未来调用,您可以使用智能合约自动化工具或预言机服务。****

想更加了解智能合约的简介,可观看智能合约文档docs.soliditylang.org/en/v0.8.13/