以太坊开发–geth的使用入门

以太坊开发–geth的使用入门geth 的全称是 go ethereum 是一个以太坊客户端 用 go 语言编写 应该是目前最常用的客户端 当然以太坊客户端还有用 C Ruby Python Java 等其他多种语言编写的 不同类型的客户端是为了满足不同的需求场景 今天我们主要来介绍 geth 发音同 guess 的使用 nbsp nbsp nbsp 对于我们开发来说 比较普遍有两种方式打开 geth 控制台 以开发方式登录和私链方式登录 这两种方式是完全不

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

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

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

geth  –datadir “~/ethdev” –dev 

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

以太坊开发--geth的使用入门

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

geth –dev console 2>>file_to_log_output

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

以太坊开发--geth的使用入门

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

eth.accounts

以太坊开发--geth的使用入门.

可见当前没有任何账户。

(4)创建一个新账户

personal.newAccount(‘密码’)

以太坊开发--geth的使用入门

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

以太坊开发--geth的使用入门

就发现有两个账户了。

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

以太坊开发--geth的使用入门

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

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

tail -f file_to_log_output

以太坊开发--geth的使用入门

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

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

miner.start()

以太坊开发--geth的使用入门

来观察日志输出:

以太坊开发--geth的使用入门

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

(8)停止挖矿

miner.stop()

以太坊开发--geth的使用入门

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

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

以太坊开发--geth的使用入门

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

(10)user1向user2转移以太币

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

以太坊开发--geth的使用入门

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

以太坊开发--geth的使用入门

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

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

以太坊开发--geth的使用入门

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

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

以太坊开发--geth的使用入门.

然后就发现账户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; } }”
以太坊开发--geth的使用入门



然后编译该合约:

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

编译后的结果如下:

以太坊开发--geth的使用入门

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”}]

以太坊开发--geth的使用入门

然后是访问abi接口:

MyContract=eth.contract(abi)

以太坊开发--geth的使用入门

然后获得合约的实例:

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

以太坊开发--geth的使用入门

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

调用函数传递参数

以太坊开发--geth的使用入门

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

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212349.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午8:15
下一篇 2026年3月18日 下午8:15


相关推荐

  • 调用so库文件以及里面的方法「建议收藏」

    调用so库文件以及里面的方法「建议收藏」之前文章写过一篇JNI生成so库文件 并调用里面的方法手把手教你—JNI的实现实际开发中 so库是别人给你的,不是你自己写的没所以就要用别人的so库文件。有很多情况,有一种是比较简单的:既有so库文件又有对应的jar包,这样的话 直接就可以调用里面的方法了。第二种比较坑爹,限制也比较多,所以现在就主要研究一下第二种吧(只有so库 其他什么都没有)第一

    2022年6月16日
    41
  • hotumoyi吉他_木棒能做什么

    hotumoyi吉他_木棒能做什么乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 50 个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式输入包含多组数据,每组数据包括两行。第一行是一个不超过 64 的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。输出格式为每组数据,分别输出原始木棒的可能最小长度

    2022年8月9日
    12
  • 区块链从概念到落地,多样化应用激活大数据经济

    区块链从概念到落地,多样化应用激活大数据经济

    2022年3月7日
    35
  • SIFT算法的应用–目标识别之Bag-of-words模型

    SIFT算法的应用–目标识别之Bag-of-words模型

    2021年9月6日
    57
  • 大学计算机基础第五版王贺明pdf_大学计算机基础中国农业出版社

    大学计算机基础第五版王贺明pdf_大学计算机基础中国农业出版社计算机数学基础课件教学课件作者刘树利01课件.ppt第一章 函数、极限与连续  (4)极限的简单性质       >0,同时在x1的附近的点的函数值也是正的。B<0,同时在x2附近的点的函数值也是负的。(如图)limf(x)=Ax→x0  由上面的说明就可得出函数f(x)在x0处的极限值的符号与x0点附近(即某去心邻域)的点的函数值的符号的关系。定理1.3  如果      …

    2022年8月11日
    15
  • netty消息推送系统_聊天服务器

    netty消息推送系统_聊天服务器简易聊天室转:忘了…以下为自动创建代理hub方式使用NuGet引用:Microsoft.AspNet.SignalR什么时候使用generatedproxy如果你要给客户端的方法注册多

    2022年8月5日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号