這篇文章主要介紹“eosio編譯與部署的詳細步驟”,在日常操作中,相信很多人在eosio編譯與部署的詳細步驟問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”eosio編譯與部署的詳細步驟”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習吧!
公司主營業(yè)務(wù):網(wǎng)站設(shè)計制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出仁化免費做網(wǎng)站回饋大家。
創(chuàng)世節(jié)點(BIOS) 用于創(chuàng)建初始區(qū)塊,加載基礎(chǔ)合約,供其它節(jié)點同步連接。
礦工節(jié)點(BP) 主要用于生產(chǎn)同步區(qū)塊,計算合約產(chǎn)生的費用歸礦工賬號所有。
查詢節(jié)點 不產(chǎn)生區(qū)塊,同步區(qū)塊信息,提供區(qū)塊信息查詢功能。
私鑰 用來進行簽名操作,私鑰可以生成唯一對應(yīng)公鑰。
公鑰 用來對私鑰的簽名進行驗證。
錢包 生成和保存私鑰的地方,當需要進行簽名操作時,會從錢包讀取私鑰列表,進行簽名。
帶寬 帶寬分為cpu帶寬和net帶寬兩種,每次執(zhí)行合約都會消耗一定的帶寬(從賬號中扣取)。
合約 一段在鏈上可執(zhí)行代碼,綁定在賬號上,每個賬號只能綁定一份合約。
賬號 存儲用戶信息,包括余額、帶寬、合約(如果有)等。
總票數(shù) 總票數(shù)=總發(fā)行的貨幣數(shù)量。
投票 投票者抵押貨幣投票給礦工,當?shù)V工投票數(shù)大于總票數(shù)的15%時創(chuàng)世節(jié)點停止產(chǎn)生區(qū)塊,轉(zhuǎn)由礦工生產(chǎn)區(qū)塊。
所謂的礦工節(jié)點與查詢節(jié)點,只是為了區(qū)分是否生產(chǎn)區(qū)塊的不同配置。
注意:后面編譯依賴GIT,所以務(wù)必保證代碼根目錄的.git完整,以及系統(tǒng)安裝有g(shù)it。 以下以ubuntu系統(tǒng)為例,其它系統(tǒng)步驟類似。
先安裝GIT,如果已經(jīng)安裝則忽略這一步
sudo apt update && sudo apt install git -y
從GIT上克隆最新代碼
git clone https://github.com/eosio/eos --recursive --depth 1
使用eosio_build.sh自動編譯
腳本會檢查系統(tǒng)依賴庫,并自動安裝,請注意管理員權(quán)限提示,如果下載依賴庫時中斷請檢查網(wǎng)絡(luò)狀態(tài),然后再次執(zhí)行。
cd eosio export LOCAL_CMAKE_FLAGS="-DEOSIO_ROOT_KEY=EOS6MRyAjQq8ud7hVNYcfnVPJqcvpscN5So8BhtHuGYqET5GDW5CV -DCORE_SYMBOL_NAME=EOS" ./script/eosio_build.sh
正式環(huán)境可以使用LOCAL_CMAKE_FLAGS
環(huán)境變量指定根公鑰EOSIO_ROOT_KEY
和系統(tǒng)貨幣符號CORE_SYMBOL_NAME
打包和安裝
編譯成功會出現(xiàn)'EOSIO'的ASCII圖樣提示,請執(zhí)行以下操作,把程序安裝到系統(tǒng),如果出現(xiàn)編譯錯誤,請?zhí)峤诲e誤提示給相關(guān)人員查看解決。
cd build/packages bash ./generate_package.sh [brew|deb|rpm] ls #ubuntu sudo dpkg -i eosio-v1.7.3.deb #redhat sudo yum install eosio-v1.7.3.rpm #或者 sudo rpm -ivh eosio-v1.7.3.rpm
參數(shù)說明:
brew
mac系統(tǒng)
deb
ubuntu系系統(tǒng)
rpm
redhat系系統(tǒng)
重新編譯 如果有修改代碼,或者進行版本更新,請先關(guān)閉當前運行的錢包和節(jié)點程序,以及清除安裝到系統(tǒng)的想著程序,再編譯。
pkill -2 keosd nodeos #ubuntu sudo apt remove eosio #redhat sudo yum remove eosio
Linux: ~/.local/share/eosio/nodeos/config Mac: ~/Library/Application Support/eosio/nodeos/config
啟動錢包服務(wù)
keosd --unlock-timeout 3600 # 3600秒后錢包重新鎖定
創(chuàng)建錢包
請保存輸出的錢包密碼,下次打開錢包時用的到。
cleos wallet create -n default #打開錢包 cleos wallet open -n default
創(chuàng)建公私鑰
cleos create key
把上步生成的私鑰導(dǎo)入錢包
cleos wallet import -n default --private-key [private key]
參數(shù)名 | 示例 | 說明 |
---|---|---|
agent-name | p2p網(wǎng)絡(luò)中標識自己的節(jié)點的名字 | "eosio bios" |
producer-name | 礦工的賬號名 | "eosio" |
signature-provider | 礦工的公鑰私鑰,用于簽名 | EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV<br>=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 |
p2p-server-address | p2p服務(wù)監(jiān)聽地址,默認監(jiān)聽0.0.0.0:9876 | "0.0.0.0:9876" |
http-server-address | http服務(wù)器監(jiān)聽地址,如果不想提供http服務(wù),可以把地址留空,則不http服務(wù)不啟動。注意不填寫會使用默認地址127.0.0.1:8888 | "127.0.0.1:8888" |
enable-stale-production | 啟動后立即開始生產(chǎn)塊。如果不是BIOS節(jié)點,這里填false。 | true |
p2p-peer-address | 其它節(jié)點的p2p同步地址,用于同步數(shù)據(jù),此參數(shù)可以有多個,即連接到多個節(jié)點。 | "192.168.0.2:9876" |
創(chuàng)建eosio系統(tǒng)賬號的公私鑰,參見4. 創(chuàng)建錢包和公私鑰
修改genesis.json的initial_key為上一步生成的公鑰
啟動節(jié)點,注意填寫第1步生成的公私鑰
nodeos --agent-name "eosio bios" --producer-name "eosio" \ --signature-provider [public key]=KEY:[private key] \ --plugin eosio::chain_plugin --plugin eosio::chain_api_plugin \ --p2p-server-address "0.0.0.0:9876" --http-server-address "127.0.0.1:8888" --enable-stale-production
下載編譯合約編譯器
git clone https://github.com/eosio/eosio.cdt.git --recursive --depth 1 cd eosio.cdt ./build.sh sudo ./install.sh
下載編譯合約
git clone https://github.com/eosio/eosio.contracts.git --depth 1 cd eosio.contracts ./build.sh
創(chuàng)建系統(tǒng)賬號
OwnerKey與ActiveKey相同,參見6.1生成的公鑰
cleos create account eosio eosio.token [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.msig [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.bpay [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.names [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.ram [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.ramfee [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.saving [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.stake [OwnerKey] [ActiveKey] -p eosio cleos create account eosio eosio.vpay [OwnerKey] [ActiveKey] -p eosio
如果使用LOCAL_CMAKE_FLAGS
參數(shù)指定了根公鑰,則這里必須相同。
部署貨幣合約,請確認在合約代碼根目錄執(zhí)行,參見6.2.2下載編譯合約
cleos set contract eosio.token build/eosio.token -p eosio.token cleos set contract eosio.msig build/eosio.msig -p eosio.msig
創(chuàng)建貨幣
cleos push action eosio.token create '["eosio", "1000000000000.0000 EOS", 0, 0, 0]' -p eosio.token cleos push action eosio.token issue '["eosio", "1000000000000.0000 EOS", "issue"]' -p eosio
如果使用LOCAL_CMAKE_FLAGS
參數(shù)指定了系統(tǒng)貨幣符號,則這里必須相同。
部署系統(tǒng)合約,請確認在合約代碼根目錄執(zhí)行,參見6.2.2下載編譯合約
cleos set contract eosio build/eosio.system -p eosio cleos push action eosio init '[0, "4,EOS"]' -p eosio@active cleos push action eosio setpriv '["eosio.msig", 1]' -p eosio@active
創(chuàng)建礦工賬號的公私鑰,參見4. 創(chuàng)建錢包和公私鑰
創(chuàng)建礦工賬號
cleos system newaccount --stake-net [quantity] --stake-cpu [quantity] --buy-ram-kbytes 8192 \ [creater] [name] [OwnerKey] [ActiveKey] -p [creater] # 參數(shù)說明 # creater 礦工賬號的創(chuàng)建者賬號。 # name 礦工賬號的名字。 # quantity 購買帶寬的資源,從創(chuàng)建者賬號扣取。 # OwnerKey與ActiveKey相同,礦工賬號的公鑰,即上步生成的公鑰。 # 示例 cleos system newaccount --stake-net "50.0000 EOS" --stake-cpu "50.0000 EOS" --buy-ram-kbytes 8888888 eosio eosnewbpa \ EOS7n1U9Z2NQeVEvQZYjHCedNXRVWshmmuGH2j3r6bD4c8fH4U8QL EOS7n1U9Z2NQeVEvQZYjHCedNXRVWshmmuGH2j3r6bD4c8fH4U8QL -p eosio
轉(zhuǎn)賬給礦工賬號
cleos transfer [from] [recipient] [amount] [momo] # 參數(shù)說明 # from 轉(zhuǎn)賬賬號 # recipient 接收轉(zhuǎn)賬賬號 # amount 金額 # momo 注釋 # 示例 cleos transfer eosio eosnewbpa "9000000000.0000 EOS" "trans to eosnewbpa"
注冊成礦工
cleos system regproducer [name] [ActiveKey] [url] # 參數(shù)說明 # name 礦工賬號 # ActiveKey 礦工賬號的公鑰 # url 礦工的網(wǎng)站 #示例 cleos system regproducer eosnewbpa EOS7n1U9Z2NQeVEvQZYjHCedNXRVWshmmuGH2j3r6bD4c8fH4U8QL https://192.168.0.57:8888
抵押相應(yīng)的資源
cleos system delegatebw [name] [name] [stake_net_quantity] [stake_cpu_quantity] # 參數(shù)說明 # name 礦工賬號 # stake_net_quantity 抵押的網(wǎng)絡(luò)帶寬資源 # stake_cpu_quantity 抵押的CPU帶寬資源 # 示例 cleos system delegatebw eosnewbpa eosnewbpa '4400000000.0000 EOS' '4400000000.0000 EOS'
投票給自己
cleos system voteproducer prods [voter] [producers] -p [voter] # 參數(shù)說明 # voter 礦工賬號 # producers 抵押的網(wǎng)絡(luò)帶寬資源 #示例 cleos system voteproducer prods eosnewbpa eosnewbpa
創(chuàng)建eosio系統(tǒng)賬號的公私鑰,參見創(chuàng)建錢包和公私鑰
修改genesis.json的initial_key為創(chuàng)世節(jié)點(BIOS)生成的公鑰
啟動節(jié)點,注意填寫第1步生成的公私鑰
假設(shè)已知bios節(jié)點192.168.0.56:9876,BP節(jié)點192.168.0.58:9876。
nodeos --agent-name "eosnewbpa" --producer-name "eosnewbpa" \ --signature-provider [public key]=KEY:[private key] \ --p2p-server-address "0.0.0.0:9876" --http-server-address "127.0.0.1:8888" \ --p2p-peer-address "192.168.0.56:9876" --p2p-peer-address "192.168.0.58:9876"
查詢節(jié)點配置與礦工節(jié)點配置類似,只是不注冊成礦工,查詢節(jié)點常用來數(shù)據(jù)查詢。建議開啟mongo_db_plugin插件。 mongo_db_plugin是保存區(qū)塊交易信息到MongoDB的插件。
假設(shè)已知bios節(jié)點192.168.0.56:9876,BP節(jié)點192.168.0.57:9876、192.168.0.58:9876,并且這三個節(jié)點都開啟了mongo_db_plugin插件。
nodeos --agent-name "eosnewbpb" --producer-name "eosnewbpb" \ --signature-provider [public key]=KEY:[private key] \ --p2p-server-address "0.0.0.0:9876" --http-server-address "127.0.0.1:8888" \ --p2p-peer-address "192.168.0.56:9876" --p2p-peer-address "192.168.0.57:9876" --p2p-peer-address "192.168.0.58:9876" \ --plugin eosio::mongo_db_plugin --mongodb-uri mongodb://127.0.0.1:27017/EOSIO
從安全角度來說,不要私鑰泄露給他人,知道賬戶私鑰后,可以隨意操縱賬戶。
如果使用助記詞生成的私鑰,請使用復(fù)雜度較高的助記詞。
上面?zhèn)魅牒芏鄥?shù)都是演示用的,如果正式部署,建議使用配置文件的方式。
建議使用SIGINT信號來關(guān)閉節(jié)點,防止程序產(chǎn)生臟數(shù)據(jù)。
pkill -2 keosd nodeos
如果有臟數(shù)據(jù)產(chǎn)生,請使用--replay-blockchain參數(shù)或者--delete-all-blocks參數(shù)啟動節(jié)點,重新同步數(shù)據(jù)。
節(jié)點啟動前,請確認時間及時區(qū)正確,時間有偏移會影響區(qū)塊數(shù)據(jù)驗證。
sudo mv /etc/localtime /etc/localtime.bak sudo ln -s /usr/share/zoneinfo/UTC /etc/localtime # 使用 ntpdate 更新系統(tǒng)時間 sudo apt install ntpdate ntp -y # yum install ntpdate ntp -y sudo timedatectl set-timezone UTC sudo ntpdate -u time.windows.com sudo hwclock --systohc # 寫入硬件 # 啟動ntpd服務(wù) sudo systemctl enable ntp # systemctl enable ntpd sudo systemctl start ntp # systemctl start ntpd
到此,關(guān)于“eosio編譯與部署的詳細步驟”的學(xué)習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習,快去試試吧!若想繼續(xù)學(xué)習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站名稱:eosio編譯與部署的詳細步驟
URL標題:http://chinadenli.net/article26/goghcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站改版、Google、網(wǎng)頁設(shè)計公司、關(guān)鍵詞優(yōu)化、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)