geth的全称是go-ethereum,是一个以太坊客户端,用go语言编写,应该是目前最常用的客户端。当然以太坊客户端还有用C++,Ruby,Python,Java等其他多种语言编写的,不同类型的客户端是为了满足不同的需求场景。今天我们主要来介绍geth(发音同guess )的使用。

对于我们开发来说,比较普遍有两种方式打开geth控制台,以开发方式登录和私链方式登录。这两种方式是完全不同的,两者的账户也是不共用的,其中以开发方式登录相对比较简单,以私链方式登录还需要进行额外的配置,我会在后面的博客进行介绍。

(1)打开终端Terminal,执行以下命令,以开发方式启动geth

geth  --datadir “~/ethdev” --dev

这会在当前根目录下创建一个ethdev文件夹,当然这个文件夹的名称你可以自己取,我们暂且不管这个文件夹是干嘛用的,后面会进行介绍。

(2)geth启动成功后,重新开一个终端,执行以下命令,打开geth控制台:

geth --dev console 2>>file_to_log_output

该命令会打开geth控制台,同时在目录下生成一个叫做file_to_log_output的日志文件,等下我们会来查看这个日志文件。

(3)查看当前有哪些账户

eth.accounts

.

可见当前没有任何账户。

(4)创建一个新账户

personal.newAccount(‘密码')

我们这里创建两个账户。再使用eth.accounts查看账户:

就发现有两个账户了。

(5)可以把账户赋值给某一个变量,同时查询账户中的余额

可以看到两个账户中的以太币都是0.因为我们还没有启动挖矿。

(6)上面提到过日志文件,我们再重开一个终端,我们使用以下命令打开日志:

tail -f file_to_log_output

我们把这个终端界面放在一边,等下在geth控制台中有任何操作时,都可以来这边看看日志。

(7)在geth控制台中启动挖矿:

miner.start()

来观察日志输出:

可以看到在日志界面中已经显示在挖矿了。

(8)停止挖矿

miner.stop()

此时也可以看到日志界面输出也停止了。

(9)此时我们再来查看两个账户的账户余额

由此可见,挖矿所得的以太币默认是传入第一个账户的。

(10)user1向user2转移以太币

eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

提示我们账号是锁定的,所以我们需要解锁账户。

解锁账户后,转移操作就成功了。打印出来的是本次交易的地址。

(11)再次查看以太币转移后的user2账户余额

但是发现user2的账户还是为0.这是因为没有矿工来挖矿处理。根据区块链的概念,我们知道,每次交易的确认,其实都是需要挖矿的,也就是被其他矿工共识确认,然后才能加入区块链的账本中。

好,我们执行“miner.start()”开始挖矿,

.

然后就发现账户user2有3个以太币了。转账操作成功。

(12)下面我们来实现下在geth中编译一个智能合约

contract test {function multiply(uint a) returns(uint d) {return a * 7; }
}

在geth中执行如下:

source = "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"

然后编译该合约:

contract = eth.compile.solidity(source).test

编译后的结果如下:

code:就是合约编译后的字节码文件,在以太坊虚拟机EVM上运行的就是这个字节码;

abiDefinition:其实就是合约的二进制接口,可用来外部调用;

其他的一些参数也都是可以见名知意了。

然后就要获取合约的abi(其实该真正要用的abi可以通过https://ethereum.github.io/browser-solidity这个在线编译器获得):

abi=[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"type":"function"}]

然后是访问abi接口:

MyContract=eth.contract(abi)

然后获得合约的实例:

myContract=MyContract.new({from:user1,data:contract.code})

如果提示你没有解锁的话,只要解锁即可。

调用函数传递参数

函数做了乘以7的操作,输出符合预期。合约执行成功。

以上就是对geth最基本的运用,我们会在以后的开发中学习geth更为深入的功能。

以太坊开发--geth的使用入门相关推荐

  1. 以太坊是什么 - 以太坊开发入门指南

    本文首发于深入浅出区块链社区 原文链接:以太坊是什么 - 以太坊开发入门指南 很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及 ...

  2. Web程序员如何入门以太坊开发

    我经常构建使用以太坊的Web应用程序,我理所当然地认为每天都使用的是神奇的工具集.我们的生态系统正在迅速发展,我认为很多新人都感到不知所措.以太坊是一项了不起的技术,但它也是新生的,而且根本没有足够的 ...

  3. 第一课 以太坊开发从入门到精通学习导航

    辉哥认为,区块链是人类社会伟大的革命,改变了生产关系.但是作为技术人员,有必要了解全部底层技术和算法吗?依稀记得,以前有些培训机构培训使用电脑时先教五笔输入法,然后才开始学习使用WINDOWS,让很多 ...

  4. 以太坊开发入门,完整入门篇(小白可以看看,高手看看自己有没有遗漏的

    2019独角兽企业重金招聘Python工程师标准>>> 翻译自:https://medium.com/@mattcondon/getting-up-to-speed-on-ether ...

  5. 以太坊开发入门实战视频教程-杨正威-专题视频课程

    以太坊开发入门实战视频教程-326人已学习 课程介绍         以太坊开发入门实战视频教程:从以太坊的安装使用,到rpc接口的调用,以及钱包应用开发所需要的知识(以java为例),智能合约的简单 ...

  6. 以太坊开发入门--相关知识点说明

    架构 应用层 钱包-METAMASK 水龙头: 一.Ropsten测试网络 https://faucet.egorfine.com/ 每个地址每天只能获取一次 二.Kovan测试网 https://e ...

  7. 以太坊开发入门,如何搭建一个区块链DApp投票系统

    点击关注异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 第一节 概述 对于初学者,需要了解以太坊开发相关的基本概念,另外就是如何构建一个基于以太坊的完整去中心化应用例如一个区块链投票 ...

  8. eth geth 安卓_零基础学习以太坊开发--安装和使用以太坊客户端geth

    一.预备知识 想从事区块链开发,了解以太坊开发的程序员,在刚开始接触以太坊的时候,发现有很多的新名词: EVM solidity go-ethereum(geth) pyethereum Testrp ...

  9. 【以太坊开发06】Truffle开发入门

    ⼀.什么是truffle 1. 概述 truffle是世界级的以太坊开发框架,它使得以太坊开发变得简单⾼效,它具有以下特点: 内置智能合约编译.链接.开发和⼆进制管理. 快速开发的⾃动化合约测试 脚本 ...

最新文章

  1. 驳《五大受损 全面解析PHP的糟糕设计》——为PHP正言
  2. 问题八十八:Fibonacci数非递归解
  3. ROS学习笔记九:ROS工具
  4. oracle自定义函数获取省份,oracle自定义函数查询数据字典项
  5. 数列分段(洛谷P1181题题解,Java语言描述)
  6. 360浏览器清除缓存_手机微信内置浏览器缓存清理指南
  7. python打包文件提示错误
  8. 苹果电脑java如何降级,如何在Mac OSX上降级JRE / JDK?
  9. ssh远程连接网络构建
  10. Parser-Free Virtual Try-on via Distilling Appearance Flows代码解析
  11. 电源大师课笔记 2.6
  12. 五阶魔方公式java_5阶魔方教程(五阶魔方一步一步图解)
  13. 廊坊金彩教育:店铺标题怎么写
  14. bug日志-win10任务栏卡死、无法加载
  15. 关于CTF中脚本的编写及使用。ISCC之Retrieve the passcode
  16. 插槽和axios的封装
  17. 联想hx系列服务器,联想ThinkAgile HX系列 融合
  18. MySQL基础篇-MySQL 命令大全
  19. SqlServer日期格式
  20. Android逆向【4】:暴力破解APK签名校验,愉快的重新打包微信支付宝APK

热门文章

  1. 家庭食品包装密实袋的前世今生和未来
  2. CSS阴影属性-文字阴影 盒子阴影
  3. 计算机信息课堂教育形势分析,信息技术在教学中的应用情况分析
  4. mondrian olap 示例_java开源的OLAP引擎--mondrian
  5. python怎么画玫瑰_python画一朵玫瑰给你
  6. docker安装openldap
  7. 刷脸支付核心靠的就是人脸识别技术
  8. JVM——内存溢出和内存泄漏的区别
  9. 【渝粤教育】电大中专计算机职业素养 (10)作业 题库
  10. 上海交大和浙大计算机专业哪个学校,清华、北大最差的专业和上海交大、浙大最好的专业怎么选?...