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