博客
关于我
Go以太坊开发详解
阅读量:612 次
发布时间:2019-03-13

本文共 1385 字,大约阅读时间需要 4 分钟。

以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术构建了一个去中心化的平台,所有的交易同步保存在每个节点中,通过将区块单向级联成链,以太坊有效的保证了交易的不可篡改:

在这里插入图片描述

智能合约平台

以太坊是第一个实现了虚拟机的区块链,因此为智能合约 - Smart Contract - 的运行提供了良好的支持环境。也正因为这个原因,以太坊被称为区块链2.0,以区别于比特币代表的以数字加密货币为核心特征的区块链1.0。

可以将智能合约理解为机器之间的合同约定,在满足一定条件时自动执行约定好的逻辑,例如在保险理赔流程中,如果理赔条件满足就自动将赔偿金释放给出险人,这个流程就可以使用智能合约来实现。

有多种语言可以开发以太坊智能合约,但目前最常用的是类似于JavaScript的Solidity语言。本课程中将采用Solidity讲解智能合约的开发。

JSON RPC

如果我们希望构造一个去中心化应用(DApp),除了智能合约的开发,通常还需要使用其他开发语言为用户提供操作智能合约的用户接口,例如开发一个网页、一个手机App或者一个桌面应用。这些代码都需要与以太坊进行交互。

以太坊规定了每个节点需要实现的应用开发接口,该接口是传输无关的,应用程序可以通过HTTP、websocket或IPC等多种通信机制来使用该接口协议操作以太坊节点:

在这里插入图片描述

理论上你可以使用任何语言基于JSON RPC接口开发出以太坊之上的去中心化应用,不过为了提高开发效率,更好的办法是使用特定语言的JSON RPC封装库,这些库封装了JSON RPC的协议细节,

有助于开发人员聚焦在业务逻辑的实现上。

虽然以太坊的官方客户端geth就是采用Go语言开发的,但是直接使用geth提供的接口对于DApp开发来讲过于重量级和碎片化了,更好的办法是最DApp开发增加一层抽象,屏蔽掉不必要的细节,比如利用课程提供的 ethtool 开发包。

课程内容概述

本课程的目的是帮助Go开发工程师快速掌握开发以太坊应用的技能,同时穿插讲解以太坊的一些基本概念,例如:账户、交易和智能合约的开发等。

第二章 Hi,以太坊

这一章将通过一个简单的Go应用的开发来讲解使用Go语言进行以太坊应用开发的最简流程,通过这一部分的学习,你就可以在自己的Go应用中引入基本的以太坊支持了。

第三章 账户管理

这一章将详细介绍以太坊的账户管理接口。如果你对开发中心化钱包应用感兴趣,或者需要在自己的网站中动态创建账户(例如,你希望为网站增加对以太坊支付的支持),那么这部分内容会有很大的帮助。

第四章 理解状态与交易

这一章主要讲解以太坊的交易操作接口,同时也介绍一些重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理清Go应用与以太坊交互的大多数问题。

第五章 智能合约的开发、部署与交互

这一章将通过一个ERC20代币合约的开发、编译、代码生成、部署与交互的完整流程,讲解使用Go语言操作solitiy合约的方法。如果你希望为自己的网站增加代币支持,这一部分的内容是必须的。

第六章 过滤器、发布订阅与事件

这一章主要讲解以太坊的通知机制以及如何在Go应用中使用过滤器和发布订阅机制来监视块和交易的生成以及合约事件的触发。

课程为每个知识点都提供了相应的预置代码,你可以在实验环境的~/repo目录下查看。

课程连接:

转载地址:http://uhyaz.baihongyu.com/

你可能感兴趣的文章
navicat 自动关闭_干掉Navicat!MySQL官方客户端到底行不行?
查看>>
Navicat 设置时间默认值(当前最新时间)
查看>>
navicat 连接远程mysql
查看>>
navicat:2013-Lost connection to MySQL server at ‘reading initial communication packet解决方法
查看>>
Navicate for mysql 数据库设计-数据库分析
查看>>
Navicat下载和破解以及使用
查看>>
Navicat中怎样将SQLServer的表复制到MySql中
查看>>
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
查看>>
Navicat可视化界面导入SQL文件生成数据库表
查看>>
Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
查看>>
Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
查看>>
Navicat如何连接MySQL
查看>>
navicat导入.sql文件出错2006- MySQLserver has gone away
查看>>
Navicat导入海量Excel数据到数据库(简易介绍)
查看>>
Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)
查看>>
Navicat工具中建立数据库索引
查看>>
navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048
查看>>
navicat怎么导出和导入数据表
查看>>
Navicat怎样同步两个数据库中的表
查看>>
Navicat怎样筛选数据
查看>>