智能合约与可编程性
Solidity
Solidity 是在以太坊及类似网络上编写智能合约时使用最广泛的编程语言。计算机最终运行的是字节码那种微小而晦涩的指令,人直接去写会非常痛苦。Solidity 居于中间,是一种可读、对人友好的语言,有点像用平白的句子去写食谱,而不是一条条列出每块肌肉的动作。开发者用 Solidity 表达合约的规则,再由一种叫编译器的工具把它翻译成网络的虚拟机真正执行的字节码。
它的风格刻意贴近人们熟悉的网站和应用开发语言,从而降低了新手的门槛。在 Solidity 里,你描述合约保存的数据(比如谁拥有多少),以及读取或改动这些数据的功能(比如转账或投票)。这门语言还内置了一些区块链特有的概念:当前这次调用是谁发起的、随之附带了多少价值,以及用来拦截不被允许的操作的权限检查。代码写好后会被编译并部署,此后它通常就一成不变地留在链上,向任何人公开可读。
Solidity 的重要性在于,它是通往智能合约平台开发的入口;绝大多数知名应用都是用它写成的,围绕它也积累了大量的教程、代码库和经过审计的范例。由于这些代码掌管着真实的价值,而且部署后通常无法再编辑,安全地编写它是一门严肃的手艺,复用那些久经考验、经过审查的现成模块,是一种普遍而稳妥的习惯。
contract Counter {
uint public count;
function increment() public {
count = count + 1;
}
}一份极小的 Solidity 合约:它保存一个数字,并让任何人给它加一。编译器会把它变成虚拟机运行的字节码。
Solidity 并非唯一选择;有些平台使用别的语言,例如以太坊上的 Vyper,或某些其他链上的 Rust。
又称
另见