源 | crossin的编程教室
谈起这几年最热的技术,一定少不了区块链。按说新技术的出现本是稀松平常的事情,但区块链的出现和发展,却有那么一点让人不淡定:
其一,区块链的代表应用比特币,其价格在这七八年间翻了上百万倍。2010年有人花10000个比特币买了两块披萨,在比特币最高价位时,这两块披萨相当于近两亿美元。
其二,因为区块链项目的大热,相关从业人员的需求激增,岗位薪资也水涨船高,让一众程序员们蠢蠢欲动。
正所谓人红是非多,关于区块链以及数字货币的争论一直不断。支持者认为区块链将会是有一项改变世界的新技术,而反对者则认为它不过是又一个更高级的庞氏骗局罢了。
我觉得,对于一个新兴事物,没必要过早地下结论。尤其在还不了解它的情况下,就凭自己的固有观念来站队打标签,这是很不明智的。
于是,和你们学习Python一样,我也在不断学习新的技术,而区块链就是我最近关注较多的一项。在这里分享下我对区块链的一些认识和理解。
说区块链就不能不说比特币。它们好像鸡和蛋的关系:区块链是比特币的技术基础,但区块链的相关研究却是由比特币开始。
比特币提供了一种去中心化的、不可篡改的、匿名的记账方式(而并非一种以实体存在的“币”,即便在网络上,也没有“一个比特币”)。而逐渐人们又发现,比特币背后的区块链蕴含着更大的想象空间。
以太坊就是区块链的另一个热门应用。它最大的优势是提供了“智能合约”。如果说,比特币解决了交易记录的可靠性问题,那么智能合约就更进一步,避免了赖账的问题。
智能合约相当于一段代码,它可以像交易记录一样被添加到区块链上,又可以在条件满足时被触发执行。这从技术上解决了交易双方的信任问题,提供了点对点的合约,没有中间商赚差价。以太坊也不再是一个单纯的账本,而成为一个去中心化的应用平台。在这个平台之上,开发可以构建更加复杂分布式应用,无需自行实现即可拥有区块链的功能。
从程序员的视角来看,以太坊是一个虚拟机。在这个虚拟机之上,我们可以用代码开发自己程序(智能合约)。写好的程序被上传到区块链上,等待条件触发执行。前面说过,区块链的产生是需要有人来计算的,因此在以太坊部署和执行代码需要支付费用(以太币),以维持这个系统。
以太坊使用的开发语言叫 Solidity,它与 JavaScript 类似,也借鉴了 C++ 和 Python。它因以太坊而生,因此是面向合约的,并自带支付功能。咱们作为一个编程类的干货公众号,此处必须得来一段代码了。
Talk is cheap. Show me the code.
写一个 Solidity 的 HelloWorld 并不难。我们在官方文档的例子上稍作修改:
pragma solidity ^0.4.10;
contract HelloWorld {
string greeting;
function set(string s) public {
greeting = s;
}
function get() public constant returns (string) {
return greeting;
}
}
这是一段很基础的面向对象代码,合约(contract)HelloWorld 有一个变量 greeting,get/set 两个方法分别获取和修改这个变量。第一行 pragma 则是指明使用的 solidity 版本。
这就是用 solidity 实现的一个最简单的智能合约。
看到这里,你是否对区块链有了更多的认识?
但所谓术业有专攻,在区块链领域,我也只是一个学习者。理解上若有偏差,欢迎大家留言指正和讨论。
对于想进一步学习区块链编程,或有意从事相关工作的朋友,不妨了解下小象学院的区块链编程课程,有更专业的讲师为你答疑解惑。
点击文末的“阅读原文”,了解课程的详细信息。