链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。

在本文中,将介绍比特币、超级账本Fabric和以太坊这三种区块链中,分别使用什么开发语言来进行智能合约的编程,并提供你进一步学习的资源链接。

我先介绍一下,我从事Python近9年,接下来我介绍一下我对于区块链的见解,如果对于Python有不懂得可以骚扰我:1547251666。。或者关注微信公众号:Python从程序猿到程序员

比特币

比特币是第一个真正意义上的区块链,不过,从严格意义上来讲,它对智能合约的开发者是不友好的。

可以用一种低门槛的编程语言Bitcoin Script在比特币系统上编写智能合约。每个比特币地址都对应着一个Bitcoin Script程序。看起来是这样:

另一种较高级别的语言是Ivy,它可以编译成Bitcoin Script。Ivy能够帮助你编写自定义的比特币地址,这种地址与隔离见证(SegWit)兼容,在比特币协议(包括签名检查、hash特征值(commitment)和时间锁)的支持下,可以执行任意条件组合。例如:

比特币“虚拟机”——协议中负责执行Bitcoin Script程序的一部分——与以太坊或者Chain Protocol等其它智能合约平台的虚拟机相比(功能)更加有限,其指令系统甚至不是图灵完备的。但Bitcoin Script的确提供了一组很有用的基础原语(primitives)——签名校验、哈希计算以及相对和绝对的时间锁——另外还能对这些原语进行自由组合。

以太坊

以太坊是第一个提供完善的智能合约开发框架的区块链,因此它也被称为区块链2.0的代表。事实上,目前绝大多数的区块链应用,包括ICO代币发行,都是基于以太坊来实现的智能合约应用。

以太坊有四种专用语言可以用来开发智能合约:

Solidity ,受JavaScript 启发

Serpent ,受Python启发

Mutan,受Go 启发

LLL 受Lisp 启发

这四种语言都是为面向合约编程而从底层开始设计的语言,但从目前的发展来看,Solidity已经称为以太坊智能合约开发当之无愧的首选语言。

Solidity的语法类似于JavaScript,这降低了学习门槛,易于被掌握和使用,因为JavaScript是Web开发者的常用语言。例如,下面是一个使用Solidity开发的简单但完整的智能合约:

合约代码第一行指定该合约使用的Solidity版本为0.4.21,不支持高于0.4.21版本的Solidity特性。

在Solidity中,contract关键字包含的代码段即表示一个智能合约,它拥有一些成员变量和函数,看起来非常类似于传统的面向对象开发中的类。

超级账本fabric

fabric是超级账本大家庭中最成熟的一个区块链项目,主要用于行业链、联盟联或私有链,它不需要通过挖矿来形成共识,因此可以达到很高的交易速度。

在fabric中,智能合约被称为链码(Chaincode),实质上是控制区块链网络中的不同实体或相关方如何相互交互或交易的业务逻辑。简言之,链代码将业务网络交易封装在代码中。可以调用链代码来设置和获取账本或 world state。

超级账本可以使用go、java或者nodejs来开发智能合约,不过支持最好的还是go语言。下面是使用go开发的一个简单地fabric智能合约:

frabric的智能合约可以使用一个go中的类实现,它必须要实现约定的借口Init和Query。

Init 方法 在链代码首次部署到区块链网络时调用,将由部署自己的链代码实例的每个对等节点执行。而只要在区块链状态上执行任何读取/获取/查询操作,就会调用 Query 方法。

区块链开发语言python_Python:不同区块链智能合约开发语言的选择相关推荐

  1. Aelf区块链系统搭建步骤、方法及智能合约开发介绍

    一.概要: 本文介绍基于Linux ubuntu 操作系统搭建AElf Boilerplate开发环境.运行智能合约DAPP的方法和步骤,重点是介绍和官方文档不一样的地方,也就是重点介绍搭建环境和运行 ...

  2. 【链块技术36期】智能合约基础语言(一)——Solidity概述和开发工具的使用

    原文链接:区块链技术语言:Solidity(一):概述和开发工具的使用 一.目录 ☛Solidity的概述 ☛Solidity开发工具remix的使用 ☛Solidity本地开发工具remix安装 二 ...

  3. 以太坊智能合约开发 | 一个资深技术专家的心路历程

    原创: 杨镇 一块链习社区 微信号yikuailianxishequ 本文作者杨镇, 以太坊黄皮书中译者,资深以太坊专家.曾独立中译了以太坊 Homestead 官方文档,Solidity 官方文档中 ...

  4. 区块链智能合约开发学习

    最近正在肝区块链知识学习,入手学习智能合约的开发,由于网上资料实在是太少了,好不容易东拼西凑完成了智能合约的开发.编译.部署.web3js调用(网页页面)和web3j调用(java调用),赶紧趁热把重 ...

  5. 区块链开发入门:基于以太坊智能合约构建 ICO DApp

    写给前端开发者的第一本区块链开发入门指南,通过从 0 到 1 实战开发一个 ICO DApp 项目(基于 V 神的 DAICO 设计思想),深入掌握区块链及以太坊技术. 为什么要选择区块链开发? 未来 ...

  6. Solana区块链智能合约开发简要流程

    Solana区块链智能合约开发简要流程 Solana区块链是当今市值第5的区块链,已经有很多知名生态准备部署在Solana上.相比于类以太坊(EVM)区块链来讲,Solana上智能合约开发(叫Prog ...

  7. 蚂蚁区块链第10课 可信计算及TEE硬件隐私合约链智能合约开发实践

    1,摘要 本文介绍可信计算分类INTEL SGX技术和ARM TRUSTZONE技术技术方案概要,以及应用INTEL SGX技术的蚂蚁区块链TEE硬件隐私链的智能合约开发实践. 2,可信计算和2种技术 ...

  8. 区块链课堂|从0开始了解区块链,通过代币学智能合约开发(线上课程)

    前两天约一个程序员朋友吃饭,他是通过学习蒋勇老师的区块链智能合约课程转型的区块链开发,聊到区块链开发他吐槽了这么一句:学会ERC20,就是区块链工程师. 他在找新机会的时候,被问到最多的问题就是会不会 ...

  9. 11. Fabric2.2 区块链农产品溯源系统 - 智能合约开发-1

    智能合约与业务逻辑关联度高,承载大量业务逻辑,本小节教大家搭建智能合约开发环境GoLand,并编写合约打包脚本. 作者在windows电脑安装ubuntu18.04版本虚拟机(vmware),Linu ...

最新文章

  1. tnsnames.ora无法保存的问题
  2. Tomcat应用部署:打war包、在Tomcat中注册用户角色、创建虚拟目录和域名
  3. mysql默认数据库有什么用_MySQL安装后默认自带数据库的作用
  4. Agile in a Flash:重新定义纪律
  5. Java 8 Lambdas –缺少脱离Java的链接
  6. css线条伸缩_CSS3弹性伸缩布局之box布局
  7. jsondataobjects
  8. mysql远程连接 host_MySQL远程连接:Host 'x' is not allowed to connect to this MySQL server
  9. 第五章 搭建开发板的测试环境
  10. 100道MySQL面试题及答案
  11. Ubuntu操作-01 安装NVIDIA显卡驱动
  12. windows使用密钥登录linux服务器
  13. Image Super-Resolution via Iterative Refinement 论文解读和感想
  14. 用Java解决牛客网题目BC30kiki和酸奶
  15. [bzoj1812][ioi2005]riv(树上dp)
  16. 用python3+ PyQt5写一个NFC模块的串口小工具的一星期
  17. 一文看懂:数据指标体系的4大类型
  18. PXE+Kickstart 无人值守装机
  19. ETA9742原理图PCB设计
  20. 不懂FAQ页面怎么设计?一些产品FAQ页面模板展示!

热门文章

  1. JVM理解其实并不难!
  2. Ubuntu 16.04如何使用Samba服务器
  3. Java Set转List,排序,去重
  4. eclipse提示 Please choose another workspace as ‘D:/eclipse-workspace‘ is currently...
  5. VMware安装苹果虚拟机解锁注意事项
  6. 自动清理 ES 历史数据
  7. ARM在嵌入式linux内核裁剪与移植的应用
  8. Cadence内应该如何理解和使用balun做仿真。
  9. 蓝桥真题 第九届决赛 C/C++ C组第一题 年龄问题
  10. 开源的自动代码混淆插件