专栏名称: Python新手营
数据,算法,人工智能
目录
相关文章推荐
爱可可-爱生活  ·  晚安~ #晚安# -20241014221457 ·  3 天前  
爱可可-爱生活  ·  本文通过引入GSM-Symbolic和GSM ... ·  4 天前  
爱可可-爱生活  ·  【AsahiLinux ... ·  5 天前  
爱可可-爱生活  ·  本文提出了一种“多样性奖励的 CFG ... ·  1 周前  
爱可可-爱生活  ·  [LG]《Emergent ... ·  1 周前  
51好读  ›  专栏  ›  Python新手营

月薪3000到年薪60万,你知道区块链吗?

Python新手营  · 公众号  · AI  · 2018-04-24 12:32

正文

 | 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 实现的一个最简单的智能合约。

看到这里,你是否对区块链有了更多的认识?

但所谓术业有专攻,在区块链领域,我也只是一个学习者。理解上若有偏差,欢迎大家留言指正和讨论。

对于想进一步学习区块链编程,或有意从事相关工作的朋友,不妨了解下小象学院的区块链编程课程,有更专业的讲师为你答疑解惑。

点击文末的“阅读原文”,了解课程的详细信息。