主頁 > 區塊鏈 > 通過Geth搭建私有以太坊網路

通過Geth搭建私有以太坊網路

2022-03-22 06:27:38 區塊鏈

前言

為了進一步了解以太坊區塊鏈網路的作業方式和運行原理,筆者通過官方軟體Geth搭建了私有以太坊網路fantasynetwork,最終實作了單機和多機節點間的相互連通:首先通過VMware Workstation創建基礎Ubuntu實驗平臺,再安裝Golang[1]、Geth[2]等依賴環境;其次使用puppeth工具生成私網的組態檔fantasynetwork.json并復制到三個節點目錄下,三個節點均使用該組態檔初始化網路;最后使用static-nodes.json的方式將三個節點設為默認接入節點,實作節點間的連通,連通后各節點中的賬戶可以互相轉賬挖礦,

單機多節點私網[3]

本試驗的專案結構為:

privateNet    
├── accounts.txt    
├── fantasynetwork.json    
├── node1    
│   ├── geth    
│   ├── keystore    
│   ├── node.sh    
│   ├── password.txt    
│   └── static-nodes.json    
├── node2    
│   ├── geth    
│   ├── keystore    
│   ├── node.sh    
│   ├── password.txt    
│   └── static-nodes.json    
└── node3    
    ├── geth    
    ├── keystore    
    ├── node.sh        
    ├── password.txt    
    └── static-nodes.json

創建作業目錄

  1. 創建私網作業目錄mkdir privateNet && cd privateNet
  2. 創建三個節點資料目錄mkdir node1 node2 node3
     privateNet/
     ├── node1
     ├── node2
     └── node3
    

創建默認用戶

  1. Node1
     test@ubuntu:~/privateNet$ geth --datadir node1/ account new
     Your new account is locked with a password. Please give a password. Do not forget this password.
     Password:
     Repeat password:
    
     Your new key was generated
    
     Public address of the key:   0x600d77B8ce36B829BFC8a1Cc5696Faf2218bDf75
     Path of the secret key file: node1/keystore/UTC--2021-08-11T04-51-26.533482715Z--600d77b8ce36b829bfc8a1cc5696faf2218bdf75
    
  2. Node 2
     test@ubuntu:~/privateNet$ geth --datadir node2/ account new
     Your new account is locked with a password. Please give a password. Do not forget this password.
     Password:
     Repeat password:
    
     Your new key was generated
    
     Public address of the key:   0x2F7fD5BD0026f7C2f0dB94b79D58AFE517BC56d2
     Path of the secret key file: node2/keystore/UTC--2021-08-11T04-53-30.820914994Z--2f7fd5bd0026f7c2f0db94b79d58afe517bc56d2
    
  3. Node3
     test@ubuntu:~/privateNet$ geth --datadir node3/ account new
     Your new account is locked with a password. Please give a password. Do not forget this password.
     Password:
     Repeat password:
    
     Your new key was generated
    
     Public address of the key:   0x6c1440E9c6Ca93C18B1e2A069D1D5a70e29C2363
     Path of the secret key file: node3/keystore/UTC--2021-08-11T04-54-24.244487186Z--6c1440e9c6ca93c18b1e2a069d1d5a70e29c2363
    

在此創建賬戶的密碼設定為fantasy,操作完成后會在每個節點目錄下的keystore目錄中找到賬戶密鑰檔案/錢包地址,

保存賬戶憑證

  1. 將以上賬戶的公鑰地址保存至文本檔案
     echo '0x600d77B8ce36B829BFC8a1Cc5696Faf2218bDf75' >> accounts.txt
     echo '0x2F7fD5BD0026f7C2f0dB94b79D58AFE517BC56d2' >> accounts.txt
     echo '0x6c1440E9c6Ca93C18B1e2A069D1D5a70e29C2363' >> accounts.txt
    
  2. 為了實驗方便,將賬戶對應的密碼檔案保存至對應節點目錄下
     echo 'fantasy' > node1/password.txt
     echo 'fantasy' > node2/password.txt
     echo 'fantasy' > node3/password.txt
    

創建組態檔

  1. 設定網路名稱
     test@ubuntu:~/privateNet$ puppeth
     Please specify a network name to administer (no spaces, hyphens or capital letters please)
     > fantasynetwork
     Sweet, you can set this via --network=fantasynetwork next time!
     INFO [08-10|22:08:31.110] Administering Ethereum network           name=fantasynetwork
     WARN [08-10|22:08:31.110] No previous configurations found         path=/home/test/.puppeth/fantasynetwork
    
  2. 選擇程式功能
     What would you like to do? (default = stats)
     1. Show network stats
     2. Configure new genesis
     3. Track new remote server
     4. Deploy network components
     > 2
    
  3. 選擇創建網路
     What would you like to do? (default = create)
     1. Create new genesis from scratch
     2. Import already existing genesis
     > 1
    
  4. 選擇共識演算法
     Which consensus engine to use? (default = clique)
     1. Ethash - proof-of-work
     2. Clique - proof-of-authority
     > 1
    
  5. 選擇默認賬號
     Which accounts should be pre-funded? (advisable at least one)
     > 0x600d77B8ce36B829BFC8a1Cc5696Faf2218bDf75
     > 0x2F7fD5BD0026f7C2f0dB94b79D58AFE517BC56d2
     > 0x6c1440E9c6Ca93C18B1e2A069D1D5a70e29C2363
     > 0x
    
  6. 設定默認單位
     Should the precompile-addresses (0x1 .. 0xff) be pre-funded with 1 wei? (advisable yes)
     > yes
    
  7. 設定網路ID
     Specify your chain/network ID if you want an explicit one (default = random)
     > 7777
     INFO [08-10|22:16:40.485] Configured new genesis block
    
  8. 匯出組態檔
     What would you like to do? (default = stats)
     1. Show network stats
     2. Manage existing genesis
     3. Track new remote server
     4. Deploy network components
     > 2
     1. Modify existing configurations
     2. Export genesis configurations
     3. Remove genesis configuration
     > 2
     Which folder to save the genesis specs into? (default = current)
     Will create fantasynetwork.json, fantasynetwork-aleth.json, fantasynetwork-harmony.json, fantasynetwork-parity.json
     >
     INFO [08-10|22:18:48.283] Saved native genesis chain spec          path=fantasynetwork.json
     INFO [08-10|22:18:48.285] Saved genesis chain spec                 client=aleth path=fantasynetwork-aleth.json
     INFO [08-10|22:18:48.286] Saved genesis chain spec                 client=parity path=fantasynetwork-parity.json
     INFO [08-10|22:18:48.287] Saved genesis chain spec                 client=harmony path=fantasynetwork-harmony.json
    
  9. 退出工具
    What would you like to do? (default = stats)
    1. Show network stats
    2. Manage existing genesis
    3. Track new remote server
    4. Deploy network components
    > ^C
    

此時可在當前目錄下看見生成的四個組態檔,在此只用到fantasynetwork.json檔案,其他檔案可刪去,

  1. 修改組態檔
    為了更容易挖到礦,將組態檔中difficulty難度值調小(其它引數含義可參考《創世區塊組態檔genesis.json的格式解讀》[4]):
    調整difficulty

初始化三個節點

每個節點必須使用相同的組態檔進行初始化:

geth --datadir node1/ init fantasynetwork.json
geth --datadir node2/ init fantasynetwork.json
geth --datadir node3/ init fantasynetwork.json

運行三個節點

進入對應的節點目錄下執行一下命令(其它引數含義可參考《以太坊客戶端Geth命令用法-引數詳解》[5]):

  1. Node1
    geth --nousb --datadir=$pwd --syncmode 'full' --port 27271 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 'localhost' --http.port 7271 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x600d77B8ce36B829BFC8a1Cc5696Faf2218bDf75" --password password.txt 
    
    啟動節點node1
    得到節點一的enode:
    enode://0f870fa3f8085f5abf74ea7c2a12a0809a9daaece20e3b1c4c80fb6929ff652681068c6ffd47852a4544dc282a4a15f531b452e05c4f1cf6861d4fb3b728edeb@127.0.0.1:27271
    
  2. Node2
    geth --nousb --datadir=$pwd --syncmode 'full' --port 27272 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 'localhost' --http.port 7272 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x2F7fD5BD0026f7C2f0dB94b79D58AFE517BC56d2" --password password.txt 
    
    得到節點二的enode:
    enode://45c2fc2bfdf0f48afe2083d82cc1cc642a96fcc2815755024a17b95b9fd1b3124f89e186c88a5013ced1c00bd10060a90e6b53e94fdbbfa6098b3088b3f78274@127.0.0.1:27272
    
  3. Node3
    geth --nousb --datadir=$pwd --syncmode 'full' --port 27273 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 'localhost' --http.port 7273 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x6c1440E9c6Ca93C18B1e2A069D1D5a70e29C2363" --password password.txt 
    
    得到節點三的enode:
    enode://ae4b4e18afa6238753e14ca3e99c0858509fc76efee715dd1c8278bbb7eaa5614fdc8b77a82bf7baf128c14ef574cc6701514fbb97780d30c731f7bc82dfd932@127.0.0.1:27273
    

連通三個節點

Geth主要有三種方法連通其它節點:啟動前配置static-nodes.json檔案添加節點、啟動時通過--bootnodes添加節點、啟動后在控制臺通過admin.addPeer命令添加節點,在此我們使用第一種方法,

  1. 在作業目錄下創建static-nodes.json
    [       
    "enode://0f870fa3f8085f5abf74ea7c2a12a0809a9daaece20e3b1c4c80fb6929ff652681068c6ffd47852a4544dc282a4a15f531b452e05c4f1cf6861d4fb3b728edeb@127.0.0.1:27271",    
    "enode://45c2fc2bfdf0f48afe2083d82cc1cc642a96fcc2815755024a17b95b9fd1b3124f89e186c88a5013ced1c00bd10060a90e6b53e94fdbbfa6098b3088b3f78274@127.0.0.1:27272",    
    "enode://ae4b4e18afa6238753e14ca3e99c0858509fc76efee715dd1c8278bbb7eaa5614fdc8b77a82bf7baf128c14ef574cc6701514fbb97780d30c731f7bc82dfd932@127.0.0.1:27273"    
    ]  
    
  2. 將該檔案復制到每個節點根目錄下:
    cp static-nodes.json node1/
    cp static-nodes.json node2/
    cp static-nodes.json node3/
    
  3. 為了簡化啟動,可以創建啟動節點批處理檔案
    • node1/node.sh
      nohup geth --nousb --datadir=$pwd --syncmode 'full' --port 27271 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 'localhost' --http.port 7271 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x600d77B8ce36B829BFC8a1Cc5696Faf2218bDf75" --password password.txt &
      echo "Geth started on node 1"
      
    • node2/node.sh
      nohup geth --nousb --datadir=$pwd --syncmode 'full' --port 27272 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 'localhost' --http.port 7272 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x2F7fD5BD0026f7C2f0dB94b79D58AFE517BC56d2" --password password.txt &
      echo "Geth started on node 2"
      
    • node2/node.sh
      nohup geth --nousb --datadir=$pwd --syncmode 'full' --port 27273 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 'localhost' --http.port 7273 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x6c1440E9c6Ca93C18B1e2A069D1D5a70e29C2363" --password password.txt &
      echo "Geth started on node 3"
      
  4. 啟動各節點
    test@ubuntu:~/privateNet/node1$ sh node.sh
    test@ubuntu:~/privateNet/node2$ sh node.sh
    test@ubuntu:~/privateNet/node3$ sh node.sh
    
  5. 打開三個終端,使用geth attach命令接入三個節點命令列
    test@ubuntu:~/privateNet/node1$ geth attach geth.ipc
    test@ubuntu:~/privateNet/node2$ geth attach geth.ipc
    test@ubuntu:~/privateNet/node3$ geth attach geth.ipc
    
    geth attach
  6. 查看已連接節點
    查看已連接節點

此時各節點已連接完成,每個節點賬戶默認為10個以太幣,各節點賬戶間可自由轉賬和挖礦,需要注意的是轉賬后必須經過挖礦操作才能被寫入區塊鏈,上方法啟動后的程式將會運行在后臺,關閉需通過ps ax | grep geth命令和kill <process id>命令,

多機多節點私網

準備

  1. 設定上節Ubuntu虛擬機網路模式為橋接,且IP設為靜態IP172.25.1.99
  2. Windows的IP設為靜態172.25.1.55

加入私網

  1. 在Windows下創建檔案夾node4,并將fantasynetwork.json復制到其中
  2. 初始化節點4
    C:\Users\Fantasy\Desktop\node4> geth --datadir . init fantasynetwork.json
    
  3. 新建賬戶
    C:\Users\Fantasy\Desktop\node4>geth -datadir . console
    > personal.newAccount("fantasy")
    WARN [08-11|16:13:32.987] Please remember your password!
    "0xbef61b5754ffaa843cc9199fb9a11aac468134f4"
    > exit
    
  4. 啟動節點4
    geth --nousb --datadir=. --syncmode "full" --port 27271 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 0.0.0.0 --http.port 7271 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock console
    
  5. 添加節點1[6]
    > net.peerCount
    0
    > admin.addPeer("enode://0f870fa3f8085f5abf74ea7c2a12a0809a9daaece20e3b1c4c80fb6929ff652681068c6ffd47852a4544dc282a4a15f531b452e05c4f1cf6861d4fb3b728edeb@172.25.1.99:27271")
    true
    > net.peerCount
    1
    

此時各節點已連接完成,各節點賬戶間可自由轉賬和挖礦,需要注意的是轉賬后必須經過挖礦操作才能被寫入區塊鏈

注意事項:

  • 很多教程中說不同節點啟動時不能使用相同的埠,那是因為其運行在同一個主機上,這里節點1和節點4運行在不同的埠上,故可以使用相同的埠,
  • 添加節點無效常見原因/解決辦法:
    • admin.addPeer后等一段時間才會生效
    • admin.addPeer時使用的是NAT后公網地址,而公網防火墻通常拒絕例外接入
    • admin.addPeer后開始挖礦增加同步速度
    • 簡單的方法是使用上節中的static-nodes.json方法

參考


  1. yuanlulu. golang學習1:ubuntu下安裝golang并簡單測驗. CSDN. [2021-02-21] ??

  2. shciily. Linux系統下安裝Geth客戶端. CSDN. [2020-08-29] ??

  3. Divyang Desai. Setup Your Private Ethereum Network With Geth. c-sharpcorner.com. [2020-08-04] ??

  4. soowin. 創世區塊組態檔genesis.json的格式解讀. CSDN. [2021-01-26] ??

  5. mb5fe559b5073e8. 以太坊客戶端Geth命令用法-引數詳解. CSDN. [2021-06-13] ??

  6. Someone. "admin.addPeer" is not working. Github. [2020-09-27] ??

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

標籤:區塊鏈

上一篇:顫振圖示影片

下一篇:在IDEA中重新加載maven專案:無法找到請求目標的有效認證路徑

標籤雲
其他(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