区块链开发如何成为一名区块链开发者(二)

2022-01-22 10:08分类:政策风向 阅读:

导读:随着区块链成为国家战略,央行也推出数字货币,业界对区块链行业从业人员的需求越来越大;另外最近比特币价格又创新高,去中心化金融 DeFi 应用也非常火热,程序员业余也有开发了解区块链的需求。高可用架构翻译 blockgeeks 的系列文章,帮助大家更好学习及了解区块链开发。本文为第二篇。

对区块链基础及公链开发感兴趣的读者请参阅 如何成为一名区块链开发者(一)

成为区块链开发者 - 里程碑4:学习智能合约开发

如何成为一名区块链开发者(二)

如何定义智能合约?

根据维基百科,智能合约是 "一种旨在促进、验证或执行合约的协商或执行的计算机协议"。虽然它是由美国密码学家 Nick Szabo 在 1996 年首次提出,但 Ethereum (以太坊)通常被认为是普及这一概念并使其成为主流的原因。

可以在我们的深度指南中了解更多关于智能合约的信息。

https://blockgeeks.com/guides/smart-contracts/

在智能合约中,我们想要的理想属性是什么?

任何在区块链上运行的东西都需要是不可变的,必须以太坊矿机价格有能力在不影响其完整性的情况下通过多个节点运行。因此,智能合约的功能需要具备三个要素:

确定性(Deterministic)

可终止的(Terminable)

隔离性(Isolated)

特点1:确定性

如果一个程序每次给定的输入都有相同的输出,那么它就是确定性的。例如:如果 3+1=4,那么 3+1 将永远是 4(假设基础相同)。所以当一个程序在不同的计算机中对同一组输入给出相同的输出时,这个程序就被称为确定性程序。

有各种情况,程序可以以非确定性方式运行。

调用非确定性的系统函数。当在程序中调用一个不确定的函数时。

访问不确定的数据资源。如果一个程序在运行时获取数据,而这个数据源是不确定的,那么这个程序就会变成不确定的。比如一个程序获取一个特定查询的前 10 名 Google 搜索。这个列表可能会不断变化。

动态调用。当一个程序调用第二个程序时,就叫做动态调用。由于调用目标只在执行过程中确定,所以它的性质是不确定的。

特征2:可终止

在数理逻辑中有一个错误叫做“停顿问题”。基本上,它表示无法知道一个给定的程序是否能在限定的时间内执行其功能。1936 年,Alan Turing 利用 Cantor's Diagonal Problem 推断出,无法知道一个给定的程序是否能在限定时间内完成。

这对于智能合约来说,这显然是一个问题,因为合约的定义,必须能够在给定的时间限制内终止。我们采取了一些措施来确保有办法从外部“杀死”合约,不进入一个无尽的循环,从而消耗资源。

Tags: 区块链  区块链开发  开发者 

上一篇:链游开发屎币Shiba团队宣布和游戏开发商PlaySide合作,开发屎币链游

下一篇:没有了


返回顶部