W3Schools



我想建立一个没有连接到更广泛的互联网的本地(私人)区块链,以便我可以部署一些测试合同。我该怎么做呢?

testnetsprivate-blockchaintesting
13个回答
15

一些主要步骤涉及指定networkId,并创建一个genesis文件(您可以为您的帐户提供大量的以太!)。

不是重复所写的内容,而是有指南这里 and 这里.


67

为以太坊创建私有testnet实际上非常简单。在geth的最新版本中,您甚至不需要创建自己的创世块或任何其他复杂的步骤(许多在线教程已经过时)。

首先,确保已安装geth。在OSX上,您可以通过首先安装来完成此操作家酿, then running:

$ brew tap ethereum/ethereum
$ brew install ethereum

对于其他平台,请查看geth安装说明.

您可以通过检查版本来测试它是否正常工作:

$ geth version
Geth
Version: 1.3.6
Git Commit: 9e323d65b20c32ab1db40e8dde7172826e0e9c45
Protocol Versions: [63 62 61]
Network Id: 1
Go Version: go1.6
OS: darwin
GOPATH=/Users/adrian/go
GOROOT=/usr/local/Cellar/go/1.6/libexec

现在,您可以通过运行geth来启动私有区块链--dev option:

$ get --dev --ipcpath ~/Library/Ethereum/geth.ipc

这样做可以使开发变得容易(资源):

  • --vmdebug (Virtual Machine debug output)
  • --maxpeers 0 (Networking disabled)
  • --gasprice 0 (Make your contracts affordable)
  • --port 0 (Listen on a random port)
  • --shh (Whisper protocol enabled)
  • --datadir to a temporary directory on your hard drive
  • 启用“开发模式”,这会导致geth在您第一次运行时自动生成新的创世块。
  • --ipcpath to the standard IPC path so other commands e.g. geth attach, works without additional parameters

现在,您可以通过运行连接到您的专用网络geth --dev attach in another terminal window, or by starting up 薄雾钱包. But before you can do anything, you probably want to create an account, and mine a few coins so that you can spend them.

保持原始终端窗口运行,并在另一个窗口中键入:

$ geth --dev attach

这将为您提供一个JavaScript控制台。您可以运行以下命令来创建第一个帐户:

> personal.newAccount('choose-a-password')
"0x48517108e6368f2b4da71816f9929e89c3e19ae5"

现在,你要挖掘一些硬币:

> miner.start()
true

在第一个窗口中,您将看到挖掘消息开始滚动:

I0401 12:41:03.318046   83003 worker.go:348]   Mined block (#1 / fb68b6aa). Wait 5 blocks for confirmation
I0401 12:41:03.318486   83003 worker.go:569] commit new work on block 2 with 0 txs & 0 uncles. Took 399.006µs

一旦你开了大约10个块,回到JavaScript控制台,然后停止它:

> miner.stop()
true

而已!现在你有了自己的私有testnet。

最后,一个快速无耻的插件:我写道gethdev, a simple wrapper around geth, which will simplify this process of creating your own private testnet, by automatically creating your first account, starting and stopping the mining process when there are pending transactions, and providing an environment variable to remember common arguments you always end up passing to geth. Feedback welcome!


13

如果您只是测试合同,我建议使用轻量级以太网节点HTTPS://GitHub.com/truffle suite/嘎纳车-处理. This way getting your network set up is as simple as running:

npm install -g ganache-cli

安装完成后,您可以使用以下命令启动testnet:

ganache-cli

这个以太坊节点模拟器将有一些预先填充了一堆ETH的帐户。不仅使用模拟器更容易设置,而且启动时间和事务更快。但是,它不是一个功能齐全的以太坊节点,所以它只适用于早期开发。

我刚写了一篇名为的博客文章以太坊测试网简介 which you may find helpful. You can find it here: HTTPS://Karl.特产/intro-贵的-to-ether EU M-test nets/


6

使用下面的脚本(来自Fromgeth --dev公开实时网络账户。安全吗?) will ensure that your --dev keystore is separated from your Mainnet keystore, reducing your risk of exposing your Mainnet account passwords.

这是我的Dev启动脚本:

#!/bin/sh

geth --datadir ~/EtherDev/data --dev --nodiscover    \
  --mine --minerthreads 1 --maxpeers 0 --verbosity 3 \
  --unlock 0 --password ~/EtherDev/etc/passwordfile  \
  --rpc console

这是我用来创建密码的开发脚本:

#!/bin/sh

mkdir ~/EtherDev/data
geth --datadir ~/EtherDev/data           \
  --password ~/EtherDev/etc/passwordfile \
  account new

我只是使用一个简单的密码~/EtherDev/etc/passwordfile.


2

作为以前答案的附加信息:

如果你的目标是编写和测试你可以使用的合同/ Dappsblockapps, it helps you to setup 容易 a local private blockchain you could also look at testRpc .


0

我刚刚写了一篇关于如何使用geth和go-ethereum创建私有以太坊区块链的文章。如果您有任何疑问,请告诉我。

HTTP://MLGB lock chain.com/ether EU M-private-network.HTML


3

我遇到了一些问题,而我正在使用geth建立私人网络。以下是我注意到的步骤,我相信它对您有所帮助 -

注意:我假设你已经安装了geth并继续使用你的机器。

$ mkdir pnet
$ geth --datadir pnet/ account new 

# This command will prompt you to enter password, type the password and remember it.
# Once you enter the password, account will be created and account address(hash) will appear, don't miss saving it.
# Sample output - Address: {93044af5bc90b1dda0668ae3e171ce746c320d06}
# Note, multiple accounts can be created
# Note, you must append "0x" to the address in the allocate section i.e your address becomes {0x93044af5bc90b1dda0668ae3e171ce746c320d06}
$ vim genesis.json 

# Sample Gensis file given below. In alloc attribute, 
# Mention created account address and assign some balance as shown in sample file.
# {
#    "config": {
#        "chainId": 15,
#        "homesteadBlock": 0,
#        "eip155Block": 0,
#        "eip158Block": 0
#    },
#     "gasLimit": "0x8000000",
#     "difficulty": "0x400",
#     "alloc": {"0x93044af5bc90b1dda0668ae3e171ce746c320d06": 
#                  {"balance":"200000000000000000000000"}
#             }
# }

# run below command to instantiate genesis block
$ geth --datadir pnet init genesis.json

# run following to start geth private node
$ geth --rpc --rpcport "8545" --rpcaddr "127.0.0.1" --rpccorsdomain "*" --datadir pnet/ --port "30303" --rpcapi "personal,db,eth,net,web3" --mine  
# rpcaddr in above command will be the IP of the instance where you plan to run your geth node

# once geth node starts copy the geth.ipc path to attach a geth console in another terminal using below command
$ geth attach ipc://path_to_ipc_file/geth.ipc

# After opening geth console, try unlocking the first account created above, using below command
# personal.unlockAccount("hash of the account in quotes or eth.coinbase", "password in quotes", 0)

$ personal.unlockAccount('93044af5bc90b1dda0668ae3e171ce746c320d06', 'password', 0)

现在您可以开始使用geth私有节点。


1

我遵循了这个文档,并在几分钟内运行了一个私人链。HTTP://呜呜呜.ET和doc S.org/恩/latest/network/test-networks.HTML#ID3


2

这个家伙很棒,从1结束到5开始所有部分:

HTTPS://hacker noon.com/喝热水-how-i-built-啊-private-block chain-network-安定-有-惨-too-62擦7都不556从0

编辑:

只是总结一下链接上的内容(使用Mac):

首先你需要下载geth, the go etherum platform.

  1. 创建一个文件夹并在该文件夹中创建一个genesis文件,将其命名为customGenesis.json,其中包含您的区块链详细信息。使其类似于以下内容,只需更改链ID:

    {
     "config": {
        "chainId": 2017,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },  
    "alloc"      : {},
    "coinbase"   : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x400",
    "extraData"  : "0x",
    "gasLimit"   : "0x8000000",
    "nonce"      : "0x0000000000000042",
    "mixhash"    : "0x0000000000000000000000000000000000012345678765545432233567778987",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp"  : "0x00"
    } 
    
  2. 创建另一个保存节点信息的文件夹,(folder_of_your_first_node)

  3. 打开终端以使用区块链创建文件创建第一个节点:

    geth --datadir (folder_of_your_first_node) init (folder_of_your_genesis_file)/customGenesis.json
    
  4. 使用第一个区块链节点启动网络,为networkid选择任何唯一的数字,使其变大:

    geth --datadir (folder_of_your_first_node) --networkid 77665533
    
  5. 现在区块链准备就绪并启动并运行,启动一个新的终端 window to access your node:

    geth attach (folder_of_your_first_node)/geth.ipc
    
  6. 现在您在区块链的节点内,创建一个帐户:

    personal.newAccount()
    Passphrase:(select a password)
    Repeat passphrase: (repeat the password)
    (you should see the address of your account here)
    
  7. 您可以开始挖掘醚,您需要部署合同:

    miner.start(1)
    
  8. 等一段时间,一分钟,然后停止采矿:

    miner.stop()
    

文章结束

现在,我尽量避免在文章中提到的部署合同下载默认雾 and start it using your private network, this will make deploying your contracts easier (using 第三个新的终端:

open -a /Applications/Mist.app --args --rpc  (folder_of_your_first_node)/geth.ipc

你应该看到你的第一个帐户充满了醚:)。请享用!

另外值得一提的是,在使用Mist部署第一个合同之后,您需要返回到第二个终端(您在节点内)并再次开始挖掘,否则,您的联系部署事务将不会被处理:

miner.start(1)

检查Mist,并确保已经处理了屏幕底部的事务,然后您可以返回并停止挖掘:

miner.stop()

1

只是用新工具更新这个帖子。有一个很好的工具可以帮助构建测试的私有testnet! uppeth:HTTPS://blog.ether EU M.org/2017/04/14/个体户-1-6-puppet后-master/

Geth 1.6发布了一种名为puppeth的新工具,旨在解决这个特殊的痛点。 Puppeth是一个CLI向导,可帮助创建一个新的以太网网络,直至创世纪,引导程序,签名者,ethstats,水龙头,仪表板等,而无需通过一个接一个地配置所有这些服务的麻烦。

在Devcon3期间,您将获得现场演示:HTTPS://呜呜呜.YouTube.com/watch?V=T5RC JYP TG9个&list=PLA M7G4l路人B7新年KB_sea kz27o PVA i精灵BV5&index=1


0

创建一个文件夹并在该文件夹中创建一个genesis文件,将其命名为genesis.json

{
    "nonce"     : "0x0000000000000055",
    "mixHash"   : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x20000",
    "gasLimit"  : "0x800000",
    "timestamp" : "0x0",
    "extraData" : "",
    "coinbase"  : "0x0000000000000000000000000000000000000000",
    "alloc"     : {},
    "config"    : {
        "chainId": 100,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
}

然后genesis.json init表示运行和起源inti表示:

geth --datadir "D:\bolckchain\chaindata" init "c\genesis.json"

D:\bolckchain\chaindata meanies all data store this directory and c\genesis.json meanies this directory genesis file .

专用网络创建命令运行:

geth --networkid 13 --port 30303 --datadir "D:\bolckchain\chaindata" console

然后这个推荐运行和私人网络创建:这个网络检查:

$ admin 

然后networkid = 13 .

此端口30303端口可更改示例:60606此端口使用

谢谢尝试它和私人网络创建然后雾或以太币钱包运行

谢谢


0

如果你想建立一个权威证明私人网络,我已经在媒体上发布了详细的分步指南。

HTTPS://medium.com/@ether volution/setup-有人-own-private-proof-of-authority-ether EU M-network-with-个体户-9啊0啊3750传达8

简而言之,PoA clique共识引擎至少需要2个节点

创建一个工作区

$ mkdir devnet
$ cd devnet 
devnet$ mkdir node1 node2

每个节点创建1个帐户

devnet$ geth --datadir node1/ account new
devnet$ geth --datadir node2/ account new

用puppeth创建一个genesis文件

$ puppeth

初始化您的节点

devnet$ geth --datadir node1/ init genesis.json
devnet$ geth --datadir node2/ init genesis.json

创建一个bootnode

devnet$ bootnode -genkey boot.key

开始你的bootnode

devnet$ bootnode -nodekey boot.key -verbosity 9 -addr :30310

开始节点1:

devnet$ geth --datadir node1/ --syncmode 'full' --port 30311 --rpc --rpcaddr 'localhost' --rpcport 8501 --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9[email protected]127.0.0.1:30310' --networkid 1515 --gasprice '1' -unlock '0x87366ef81db496edd0ea2055ca605e8686eec1e6' --password node1/password.txt --mine

开始节点2:

geth --datadir node2/ --syncmode 'full' --port 30312 --rpc --rpcaddr 'localhost' --rpcport 8502 --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9[email protected]127.0.0.1:30310' --networkid 1515 --gasprice '0' --unlock '0x08a58f09194e403d02a1928a7bf78646cfc260b0' --password node2/password.txt --mine

打开一个javascript控制台到节点1:

devnet$ geth attach node1/geth.ipc

将Mist连接到节点1:

devnet$ mist --rpc node1/geth.ipc

使用python或javascript web3库对区块链进行JSON-RPC调用。

我希望这有帮助。请享用 :)


0

您可以将奇偶校验用于开发网络

安装奇偶校验

bash <(curl https://get.parity.io -kL)

启动您的私人以太坊网络

parity --chain dev

浏览localhost:8180。在那里,您可以开始智能合约的开发。

用于进一步配置网络

你可以看看维基 if you want to further add any customisations to the network.