区块链技术基础知识
区块链基础
区块链作为一个概念对程序员来说并不难理解。原因是大多数复杂性(挖掘,散列,椭圆曲线加密,对等网络等)只是为平台提供一系列功能和承诺。一旦您接受了给定的这些功能,您就不必担心底层技术 - 或者您是否必须知道Amazon的AWS如何在内部工作才能使用它?
交易
区块链是一个全局共享的事务数据库。这意味着每个人都可以通过参与网络来读取数据库中的条目。如果要更改数据库中的某些内容,则必须创建一个必须被所有其他人接受的所谓事务。单词事务意味着您要进行的更改(假设您想要同时更改两个值)要么根本没有完成,要么完全应用。此外,当您的事务应用于数据库时,没有其他事务可以改变它。
例如,假设一个表格列出了电子货币中所有账户的余额。如果请求从一个账户转移到另一个账户,则数据库的事务性质确保如果从一个账户中减去该金额,则始终将其添加到另一个账户。如果由于某种原因,无法将金额添加到目标帐户,则也不会修改源帐户。
此外,交易总是由发件人(创建者)以加密方式签名。这使得可以直接保护对数据库的特定修改的访问。在电子货币的示例中,简单的检查确保只有持有账户密钥的人才能从中转账。
块
克服的一个主要障碍是(用比特币的术语)称为“双重花费攻击”:如果网络中存在两个想要清空账户的交易,会发生什么?只有一个事务可以有效,通常是首先接受的事务。问题是“第一”不是对等网络中的客观术语。
对此的抽象答案是您不必关心。将为您选择全球接受的交易顺序,以解决冲突。事务将捆绑到所谓的“块”中,然后它们将在所有参与节点之间执行和分发。如果两个交易相互矛盾,那么最终成为第二个的交易将被拒绝并且不会成为该块的一部分。
这些块在时间上形成线性序列,这是“区块链”一词源自的地方。块以相当规则的间隔添加到链中 - 对于以太坊,这大约每17秒。
作为“订单选择机制”(称为“挖掘”)的一部分,可能会发生块不时被恢复,但仅在链的“尖端”处。在特定块的顶部添加的块越多,该块恢复的可能性就越小。因此,您的交易可能会被还原甚至从区块链中删除,但等待的时间越长,它的可能性就越小。
交易不保证包含在下一个块或任何特定的未来块中,因为它不取决于交易的提交者,而是取决于矿工以确定交易包含在哪个块中。
如果您想安排合同的未来调用,可以使用闹钟或类似的oracle服务。