前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ethereum-geth常用操作

ethereum-geth常用操作

作者头像
潇洒
发布2023-10-20 11:18:14
4200
发布2023-10-20 11:18:14
举报
文章被收录于专栏:石头岛石头岛

前言

eth已经2.0了,但是1.0除了挖矿之外大部分功能都还是一样的。

geth 能做什么

  • 与eth链交互:console
  • 查看区块链状态
  • 管理账号: personal
  • 发送交易:
  • 挖矿 miner

交互操作: console

通过console启动,可以进行一系统的操作。

1.连接eth主网

默认连接最新的主网。

--datadir: 数据存放目录,不指定默认:/home/$user/.ethereum

代码语言:javascript
复制
geth --datadir /data/geth --goerli console

2.连接eth测试网

--goerli: 加入 goerli测试网 --rpcapi: 开启rpc服务,开启后才可以进行操作

代码语言:javascript
复制
geth --datadir "/data/geth" --rpc --rpcport 8545 --rpcapi "personal,eth,net,web3,admin" --rpccorsdomain "*" --goerli console 

节点管理: admin

自己搭建节点,第一步是要能使用,如果不是私链,那就需要连接上以太坊的主网或者测试网进行操作。

1.添加节点 admin.addPeer

代码语言:javascript
复制
admin.addPeer("enode://19d3655aba7ef72065412365d95a66a10fcf0518f21594d0746b0177467c4d650b726a3e9612792e6dcb9716814498dc6826e3b47ab6e6270d85113d4bc7d6a1@135.181.82.60:30303")

2.查看当前连接节点 admin.peers

下面这个是我连接的节点,是芬兰的一个节点。

代码语言:javascript
复制
[{
    caps: ["eth/63", "eth/64", "eth/65"],
    enode: "enode://19d3655aba7ef72065412365d95a66a10fcf0518f21594d0746b0177467c4d650b726a3e9612792e6dcb9716814498dc6826e3b47ab6e6270d85113d4bc7d6a1@135.181.82.60:30303",
    enr: "enr:-Je4QAqQY0hSvgTJLu-FBPW6rnpHa-pm1dge3G3qV4ChlKlMJsZA8togglNFljRAFWhOU6bv7-UHAQxp-siymzU2a24Jg2V0aMfGhMJe-lyAgmlkgnY0gmlwhIe1UjyJc2VjcDI1NmsxoQMZ02Vaun73IGVBI2XZWmahD88FGPIVlNB0awF3RnxNZYN0Y3CCdl-DdWRwgnZf",
    id: "2f927cec8a9408be8acfbf9ecc7b72a905d112c8842b9a1539a7cd40934b7357",
    name: "Geth/v1.9.24-stable-cc05b050/linux-amd64/go1.15.5",
    network: {
      inbound: false,
      localAddress: "192.168.31.128:53372",
      remoteAddress: "135.181.82.60:30303",
      static: false,
      trusted: false
    },
    protocols: {
      eth: {
        difficulty: 6585792,
        head: "0x8705d7d7a4aa189704385c325ff24ebc82496c87fff884e942bf4aba78467f0f",
        version: 65
      }
    }
}]

查看节点信息 admin.nodeInfo

查询节点自身信息。

enode: 自身的节点地址 enr: discovery: 节点发现服务端口 listener: 连接监听端口 protocols: 协议信息

代码语言:javascript
复制
{
  enode: "enode://514cf44d46abc26df3fbb084acef308483a6b1bc0712f9aead5fbbca0f1e5671f86467a2f0ec10628b48b771cde8501294715aa5d4c4b520b1a457daae9a0b3e@111.201.21.10:30303?discport=26172",
  enr: "enr:-KK4QAzy9muCCHDtd8kwjgLS9MrRKa8YKutziw51hBXyjTrJEegdA2eFsh6BR-6BcAHFF9SEu3HPUGu0-yMYTo2xcKQHg2V0aMrJhKP1qwiDF9QzgmlkgnY0gmlwhG_JFcmJc2VjcDI1NmsxoQJRTPRNRqvCbfP7sISs7zCEg6axvAcS-a6tX7vKDx5WcYN0Y3CCdl-DdWRwgmY8hHVkcDaCdl8",
  id: "45fe4324552ac00907ffea5bfbd48f678f3dad5adafe2041b585270a09034410",
  ip: "111.201.21.10",
  listenAddr: "[::]:30303",
  name: "Geth/v1.9.25-stable-e7872729/linux-amd64/go1.16.15",
  ports: {
    discovery: 26172,
    listener: 30303
  },
  protocols: {
    eth: {
      config: {
        byzantiumBlock: 0,
        chainId: 5,
        clique: {...},
        constantinopleBlock: 0,
        daoForkSupport: true,
        eip150Block: 0,
        eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
        eip155Block: 0,
        eip158Block: 0,
        homesteadBlock: 0,
        istanbulBlock: 1561651,
        petersburgBlock: 0
      },
      difficulty: 1,
      genesis: "0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a",
      head: "0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a",
      network: 5
    }
  }
}

账号管理 personal

1.创建账号 personal.newAccount()

创建账号可以创建多个账号。

代码语言:javascript
复制
personal.newAccount("password")

结果:

INFO [12-09|23:28:39.162] Your new key was generated address=0x6C5d3DafE18B5108a0C02B5663f6963EBf9f4CfA WARN [12-09|23:28:39.191] Please backup your key file! path=/data/geth/keystore/UTC--2022-12-09T15-28-34.293134840Z--6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa WARN [12-09|23:28:39.191] Please remember your password! "0x6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa"

生成一个keystore文件,路径是启动时候我设定的路径: /data/geth/keystorekeystore文件是相关于密钥,签署交易的以太坊私钥的加密文件。如果你丢失了这个文件,你就丢失了私钥。 简单的说keystore就是你加密过后的私钥,要有私钥和你的密码,才能使用你的账号,这样就是双重保险。 几乎每条链都有keystore文件这种形式。

查看一下keystore文件内容:

cipher: 对称加密,用对称加密是因为使用到密码,需要解密。 cipherparams: 是 cipher 算法需要的参数。 iv: 是加密算法需要的初始化向量。 kdf: scrypt 密钥生成函数,用于让你用密码加密 keystore 文件。 kdfparams: kdf 算法需要的参数(scrypt函数需要的参数)。

代码语言:javascript
复制
{
    "address": "6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa", 
    "crypto": {
        "cipher": "aes-128-ctr", 
        "ciphertext": "a2816bbca5bf7805e75d4961375579eeb80ede2cb9364f9a8dd8be0be4694a7d", 
        "cipherparams": {}, 
        "kdf": "scrypt", 
        "kdfparams": {
            "dklen": 32, 
            "n": 262144, 
            "p": 1, 
            "r": 8, 
            "salt": "6e7f880f2e53e744c2acb422b01ddad319fbd4ee6dfe38da3e921efbdb4604ff"
        }, 
        "mac": "24c823caf933a0563b1da19982b8259fcaafb423a69cb6fb85108303cd2ebd4e"
    }, 
    "id": "ef6cdbe1-dbe3-43b8-bcea-e7b3e0e121f7", 
    "version": 3
}

2.交互模式 personal.newAccount

执行命令:

代码语言:javascript
复制
personal.newAccount()

结果:

Passphrase: #输入密码 Repeat passphrase: #确认密码 INFO [12-09|23:41:31.682] Your new key was generated address=0x1d774CdA456C0f7cC84484b0316A4E959c206E14 WARN [12-09|23:41:31.682] Please backup your key file! path=/data/geth/keystore/UTC--2022-12-09T15-41-30.670272653Z--1d774cda456c0f7cc84484b0316a4e959c206e14 WARN [12-09|23:41:31.682] Please remember your password! "0x1d774cda456c0f7cc84484b0316a4e959c206e14"


链治理:eth

1.查询所有账号 eth.accounts

代码语言:javascript
复制
eth.accounts

["0x6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa", "0x1d774cda456c0f7cc84484b0316a4e959c206e14"]

这是我刚生成的两个账号

选择其中一个:

代码语言:javascript
复制
eth.accounts[0]

"0x6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa"

2.查看余额 eth.getBalance

代码语言:javascript
复制
eth.getBalance(eth.accounts[1])

eth.getBalance("0x6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa")

挖矿 miner

1.开启挖矿

需要区块同步完成,否则无法挖矿

代码语言:javascript
复制
miner.start(10)

10表示挖矿线程数。

如果没有同步完成就开启挖矿会报错:

Block sealing failed err="unauthorized signer" Block synchronisation started Mining aborted due to sync

2.停止挖矿 miner.stop

代码语言:javascript
复制
miner.stop()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • geth 能做什么
  • 交互操作: console
    • 1.连接eth主网
      • 2.连接eth测试网
      • 节点管理: admin
        • 1.添加节点 admin.addPeer
          • 2.查看当前连接节点 admin.peers
            • 查看节点信息 admin.nodeInfo
            • 账号管理 personal
              • 1.创建账号 personal.newAccount()
                • 2.交互模式 personal.newAccount
                • 链治理:eth
                  • 1.查询所有账号 eth.accounts
                    • 2.查看余额 eth.getBalance
                    • 挖矿 miner
                      • 1.开启挖矿
                        • 2.停止挖矿 miner.stop
                        相关产品与服务
                        腾讯云服务器利旧
                        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档