主頁 > 區塊鏈 > Ethermint-1-cosmos/ethermint

Ethermint-1-cosmos/ethermint

2021-10-07 08:52:25 區塊鏈

記錄使用cosmos/ethermint的一些操作記錄與錯誤總結

注意: 目前ethermint轉移到了新的專案地址:https://github.com/tharsis/ethermint.git

老的專案地址是:https://github.com/cosmos/ethermint.git,官網檔案地址:https://docs.ethermint.zone

需要注意的是官網教程對應老版本(cosmos)的ethermint, 會有所沖突,

本文使用的是老版本的ethermint,另一篇是新版本的ethermint

文章目錄

  • 一、Introduction
    • 1.1 Architeture
  • 二、Quick Start
    • 2.1 Install
    • 2.2 Run a Node
      • Key Management
      • Reset Data
      • Delete Data
  • 三、Testnet
    • 3.1 Single-node, Local, Manual Testnet
    • 3.2 Multi-node, Local, Automated Testnet
    • 3.3 Multi-node, Public, Manual Testnet
      • 1. 創建一個單節點
      • 2. 啟動其他節點、復制檔案
      • 3. 設定Seed
  • 四、Truffle/Metamask/Remix

一、Introduction

Ethermint是一個可擴展的、高吞吐量的權益證明區塊鏈,與以太坊完全兼容并可互操作,它使用運行在Tendermint核心共識引擎上的Cosmos SDK構建,

特點:

  • 擁有以太坊的功能
  • 能夠與Cosmos其他鏈交換價值
  • 兼容Web3
  • 高吞吐量 (Tendermint)
  • 水平拓展能力 (IBC)
  • 快速交易最終一致性
  • Hard Spoon

Ethermint通過以下方式啟用這些關鍵特性:

  1. 實作Tendermint Core的應用區塊鏈介面(ABCI)來管理區塊鏈
  2. 利用Cosmos SDK實作的模塊和其他機制,
  3. 利用geth作為庫來避免代碼重用并提高可維護性,
  4. 公開一個完全兼容的Web3 JSON-RPC層,用于與現有以太坊客戶端和工具(Metamask、Remix、Truffle等)互動,

這些特性使開發人員可以利用現有的以太坊生態系統工具和軟體無縫部署智能合約,與Cosmos生態系統的其他部分互動!

1.1 Architeture

  • Ethermint 就是一個ABCI的應用實體,它通過TBFT代替了以太坊的POW
  • Ethermint區塊鏈讓以太坊開發者可以將他們的智能合約部署到Ethermint EVM,并獲得快速最終權益證明(PoS)鏈的好處
  • 開發人員還將受益于高可靠的客戶,這些客戶可以使用測驗網來測驗和部署他們的合同,
  • 可以建立互操作函式同IBC操作其他鏈,還可以用中繼網橋()實作ethermint和ethereum互操作
  • 封裝在ethermint內部的EVM模塊(x/EVM)可以作為自己獨立的模塊單獨使用,對任何Cosmos可以添加依賴,實作合約
  • 以預設定的Validator集合和EVM模型作為依賴,能夠讓專案快速達到最終一致性
  • 匯入EVM模塊可以使鏈實作網路和一些特殊的細粒度配置
  • 使用Ethemint鏈可以直接部署合約到Ethermint網路上
  • 利用Ethermint 客戶端將鏈維護推遲到Ethemint 網路,并允許參與更成熟的區塊鏈,
  • 目前Ethermint 客戶端還不支持IBC跨鏈互操作

二、Quick Start

2.1 Install

二進制原始碼安裝

git clone https://github.com/tharsis/ethermint.git
cd ethermint
make install

2.2 Run a Node

自動部署 (在ethermint檔案夾下)./init.sh

或者已經啟動過,重新啟動:

ethermintd start --pruning=nothing --rpc.unsafe --log_level "main:info,state:info,mempool:info" --trace

報錯: jq: 未找到命令

下載jq:

# 安裝EPEL源:
$ yum install epel-release

# 安裝完EPEL源后,可以查看下jq包是否存在:
$ yum list jq

# 安裝jq:
$ yum install jq

which 報錯:

which: no stringer ….

which: no gencodec …

which: no solcjs ….

原因: 依賴缺失未安裝

解決:

go get golang.org/x/tools/cmd/stringer
go get github.com/fjl/gencodec
yum -y install go-bindata protoc-gen-go
npm install -g solc
# 添加yarn倉庫
wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum -y install yarn

在另一個終端運行JSON-RPC服務:

ethermintcli rest-server --laddr "tcp://localhost:8545" --unlock-key mykey --chain-id ethermint-1

注意: --laddr 中的localhost如果是在服務器上則可以改成0.0.0.0:8545


Key Management

更加安全的做法是輸入密碼,如果想安全的鑰匙環借助于本地檔案或者OS,那么可以添加以下命令:

ethermintcli config keyring-backend file		# 設定檔案讀取鑰匙

Reset Data

  • Validtor節點不要輕易reset
  • 每個節點的priv_validator.json檔案都是獨一無二的,不要復制,可能會導致雙重簽名

rm $HOME/.ethermintd/config/addrbook.json $HOME/.ethermintd/config/genesis.json ethermintd unsafe-reset-all

Delete Data

rm -rf ~/.emint*

三、Testnet

3.1 Single-node, Local, Manual Testnet

單節點、本地、手動啟動測驗網路

創建一個單獨的驗證器節點,該節點在本地運行網路,用于測驗和其他開發相關用途,

具體操作與執行./init.sh相同

單機RPC呼叫訪問測驗:

curl -v -k -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' -H "Content-Type: application/json" 127.0.0.1:8545

3.2 Multi-node, Local, Automated Testnet

使用docker創建四個節點

專案目錄下make localnet-start,具體看官網檔案,寫的很詳細,

這里記錄一下報的錯誤:

報錯1:

docker-compose down
Removing network ethermint_localnet
WARNING: Network ethermint_localnet not found.
mkdir -p ./build/
make[1]: 進入目錄“/root/software/ethermint”
docker build -f ./networks/local/ethermintnode/Dockerfile . -t ethermintd/node
Sending build context to Docker daemon 96.66 MB
Step 1/14 : FROM golang:stretch as build-env
Error parsing reference: "golang:stretch as build-env" is not a valid repository/tag: invalid reference format
make[1]: *** [docker-localnet] 錯誤 1
make[1]: 離開目錄“/root/software/ethermint”
make: *** [localnet-start] 錯誤 2

解決:重新下載docker-ce(社區版), 注意不是docker

=> 卸載與安裝:https://blog.csdn.net/weixin_39477597/article/details/87715899

報錯2:Named stage returns: Error parsing reference: “golang:1.7.3 as builder” is not a valid repository/tag

解決: 檢查客戶端與服務器版本是否統一,解決見上鏈接

3.3 Multi-node, Public, Manual Testnet

多節點,公鏈,手動配置

此部分官方檔案寫的很簡單,這里詳細說明一下:

節點配置(在一個局域網下的兩臺機):

名稱IPSeed
node1192.168.31.214716256d39fca45c43a15d895ee85024de3c35058@192.168.31.214:26656
Node2192.168.31.51749a74315e6916a244b85214b9e66361b45dcaa2@192.168.31.51:26656

1. 創建一個單節點

與3.1一樣,首先創建一個單節點node1,init.sh

2. 啟動其他節點、復制檔案

在另一個機器上初始化node2,init.sh,在用戶根目錄下創建需要的ethermintcli、ethermintd兩個檔案夾即可,ctrl+c關閉當前運行的節點,

在節點1機子上復制node1節點的$HOME/.ethermintd/config/genesis.json檔案到節點2機器(可以用scp命令)

3. 設定Seed

在節點1獲取其nodeID,使用命令:ethermintd tendermint show-node-id,得到:716256d39fca45c43a15d895ee85024de3c35058

那么節點1的seed就是716256d39fca45c43a15d895ee85024de3c35058@192.168.31.214:26656

在節點2的檔案$HOME/.ethermintd/config/config.toml中的seeds中加入節點1的seed

image-20211004162308503

現在準備作業完畢,先啟動節點1,再啟動節點2,可以看到兩個節點之間實作了同步,

ethermintd start --pruning=nothing --rpc.unsafe --log_level "main:info,state:info,mempool:info" --trace
image-20211004162621142

如果兩個節點啟動相差時間較大,那么區塊高度也會有很大差異,新版本會自動快速同步,老版本則不會

如果是老版本ethermint那么可以都重制區塊鏈資料,再同時啟動

ethermintd unsafe-reset-all

四、Truffle/Metamask/Remix

使用此部分出現的錯誤:

匯出賬戶私鑰鑰命令:

ethermintcli keys unsafe-export-eth-key [創建的賬戶名]

匯出私鑰后,將其加入MetaMask錢包中管理

錯誤: Returned error: the method net_version does not exist/is not available

原因:開啟RPC服務時沒有開啟網路模塊權限

解決: ethermintcli rest-server --laddr "tcp://0.0.0.0:8545" --unlock-key mykey --chain-id ethermint-1 --trace --rpc-api "web3,eth,net,personal"

錯誤: Metamask匯入了賬戶,但是無法顯示余額

原因: 可能鏈id為1默認為主網

解決: 修改init.sh檔案中的鏈引數以及啟動RPC/REST的鏈ID引數(我換成了789),重新切換Metamask的網路

錯誤: 在remix中運行合約方法出現:

Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
Internal JSON-RPC error. { “code”: -32000, “message”: “internal” }

原因: 使用了web3注入的方式進行測驗, 當函式中出現了錯誤(例如不滿足require時)就會出現無法評估gas費的錯誤提示

解決: 先使用javaScriptVM模式再次運行, 可以看到具體的錯誤提示

u5au60

錯誤: web3.js報錯: Error: Returned error: the method personal_sign does not exist/is not available at Object.ErrorResponse

原因: 開啟RPC服務的時候沒有開啟personal模塊

解決: 重新啟動rpc服務: ethermintcli rest-server --laddr "tcp://0.0.0.0:8545" --unlock-key mykey --chain-id ethermint-1 --trace --rpc-api "web3,eth,net,personal"

覺得不錯的話,請點贊關注呦~~你的關注就是博主的動力
關注公眾號,查看更多go開發、密碼學和區塊鏈科研內容:
2DrbmZ

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/306043.html

標籤:區塊鏈

上一篇:NFT破圈?一個頭像為什么能拍出百萬美元? | 國慶特輯

下一篇:《區塊鏈基礎知識25講》學習筆記——第一部磁區塊鏈術語與技識訓礎

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more