Sumário
- Visão geral
- O que é a Binance Smart Chain
- O que os nós fazem
- Configurando o projeto
- Como executar um Witness Node
- Conclusão
11 de Outubro de 2022
Visão geral
A Binance Smart Chain (cadeia inteligente da Binance), abreviado como BSC, é uma blockchain que procura fornecer tanto uma alternativa quanto uma extensão à blockchain Ethereum. Ela tem feito isso por meio de várias implementações inteligentes que surgiram durante a construção da plataforma. Este guia vai orientá-lo pelo processo de como executar seu próprio nó BSC.
Pré-requisitos
Retirado do Binance docs (documentos da Binance) para requisitos de nó
- VPS executando versões recentes do Mac OS X ou Linux.
-
IMPORTANTE: 2TB de espaço livre no disco, unidade (drive) de estado sólido (SSD), gp3, ok IOPS, taxa de transferência de 250MB/S, latência de leitura <1ms (se iniciar com snap/sincronização rápida, precisará de SSD NVMe).
- 16 núcleos de CPU e 64 gigabytes de memória (RAM)
- Sugerimos o tipo de instância m5zn.3xlarge no AWS, c2-standard-16 na Google cloud (nuvem da Google).
- Uma conexão de internet banda larga com velocidade de upload/ download de 5 megabyte por segundo.
O que é a Binance Smart Chain
Retirado do Binance docs (documentos da Binance) para requisitos de nó
Boa pergunta! BSC é uma blockchain independente projetada para pegar algumas ferramentas maduras do ecossistema Ethereum, como a Ethereum Virtual Machine (EVM) ou Máquina Virtual da Ethereum. Ela pegou esse bloco específico da Ethereum e construiu em cima dele com alguns objetivos em mente.
Queria ser mais íntimo do ambiente e conseguiu isso movendo o protocolo de consenso para uma mistura de Proof-of-Authority ou prova de autoridade e Delegated Proof of Stake ou prova de participação delegada. Eles nomearam esse protocolo de “Proof of Staked Authority” ou prova de participação de autoridade. Os designers da BSC queriam também que sua nova blockchain tivesse mais desempenho que sua prima Ethereum.
Os objetivos gerais do projeto eram reduzir o tempo de bloqueio, diminuir o tempo para confirmar transações, usar uma rede de governança baseada em staking e alcançar compatibilidade cruzada com a Ethereum. A BSC lançou sua rede principal em abril de 2019.
Se você quiser mais detalhes sobre o que influenciou o design e as decisões daqueles que fizeram o sistema ou os algoritmos subjacentes, consulte o white paper deles.
O que os nós fazem
Depois de ver os objetivos da Binance Smart Chain, talvez você queira participar na rede. Para cumprir essa ação nobre, você precisa executar um Full Node ou nó completo na BSC. Existem dois tipos diferentes de nós completos: Witness Nodes ou nós testemunha e Validator Nodes ou nós validadores.
Os Witness Nodes observam, mas não participam do processo de consenso. Eles servem para duplicar os dados e funcionam como mensageiros adicionais na rede para servir o estado atual da cadeia.
Os Validator Nodes, por outro lado, fazem tudo o que os Witness Nodes fazem, mas eles também são responsáveis por validar as transações. Somado à validação de transação, eles também trabalham para produzir novos blocos. Você pode imaginar os Validator Nodes como a contrapartida a um “minerador” da Ethereum/ Bitcoin. Na próxima sessão, vou guiá-lo em como configurar e executar um Witness Node.
Configurando o projeto
O processo de execução de um Validator Node, comparado a um Witness Node, é parecido. Neste guia, executaremos um Witness Node por ser mais acessível. Isso porque os requisitos do hardware para um Validator Node são maiores do que seu irmão Witness Node. Você pode encontrar os requisitos de hardware para ambos aqui.
Todos os comandos a seguir devem ser feitos no seu VPS (Virtual Private Server ou servidor virtual privado) e não na sua máquina local.
A primeira coisa que você precisará fazer é instalar uma versão recente do Go.
Aqui estão os comandos para instalar o Golang no seu sistema Linux 64-bit:
wget https://golang.org/dl/go1.16.5.darwin-amd64.pkg
## define seu GOPATH
export PATH=$PATH:/usr/local/go/bin
## confirma se funciona executando
go version
Depois de instalar o Go, você vai querer configurar seu diretório de projeto. Execute o seguinte comando para fazê-lo:
git clone https://github.com/binance-chain/bsc
cd bsc
make geth
A próxima coisa que você precisará fazer é baixar um instantâneo dos dados da cadeia mais atualizados e colocá-lo em sua pasta pessoal. Você pode encontrar os dados aqui. Depois que tiver baixado, você executará o comando a seguir substituindo o “NAME_OF_YOUR_HOME” pelo seu diretório pessoal.
unzip geth.zip -d /NAME_OF_YOUR_HOME/node &
O instantâneo vai acelerar consideravelmente a sincronização do seu nó. Os nós BSC são enormes comparados com os nós de outras blockchains. Poderia levar semanas para sincronizar um nó até a ponta se você não fizer essa etapa.
Com o diretório do seu projeto ativado e o instantâneo baixado, agora você baixará os arquivos de configuração e os definirá.
Os comandos a seguir vão baixar os arquivos relevantes, dependendo de se você quer executar um nó na rede principal ou na rede de teste.
## rede principal
wget https://github.com/binance-chain/bsc/releases/download/v1.1.0-beta/mainnet.zip
unzip mainnet.zip
## rede de teste
wget https://github.com/binance-chain/bsc/releases/download/v1.1.0-beta/testnet.zip
unzip testnet.zip
Isso vai extrair um arquivo config.toml e um arquivo genesis.json para o diretório do seu projeto.
Como executar um Witness Node
Com toda a configuração inicial feita, é hora de executar um nó!
A próxima etapa é escrever seu estado de genesis em seu VPS com o seguinte comando.
geth --datadir node init genesis.json
Ao executar o comando acima, você deve ver uma saída semelhante à esta:
INFO [07-02|18:28:08.337] Maximum peer count ETH=50 LES=0 total=50
INFO [07-02|18:28:08.337] Smartcard socket not found, disabling err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [07-02|18:28:08.337] Set global gas cap cap=50,000,000
INFO [07-02|18:28:08.337] Allocated cache and file handles database=/root/bsc/node/geth/chaindata cache=16.00MiB handles=16
INFO [07-02|18:28:08.353] Persisted trie from memory database nodes=15 size=2.32KiB time="70.575µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-02|18:28:08.353] Successfully wrote genesis state database=chaindata ha=0d2184..d57b5b
INFO [07-02|18:28:08.354] Allocated cache and file handles database=/root/bsc/node/geth/lightchaindata cache=16.00MiB handles=16
INFO [07-02|18:28:08.366] Persisted trie from memory database nodes=15 size=2.32KiB time="29.71µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-02|18:28:08.366] Successfully wrote genesis state database=lightchaindata ha=0d2184..d57b5b
Depois de executar o comando acima, você abrirá seu arquivo config.toml e irá substituí-lo com o seguinte:
[Eth]
NetworkId = 56
NoPruning = false
NoPrefetch = false
LightPeers = 100
UltraLightFraction = 75
TrieTimeout = 100000000000
EnablePreimageRecording = false
EWASMInterpreter = ""
EVMInterpreter = ""
[Eth.Miner]
GasFloor = 30000000
GasCeil = 40000000
GasPrice = 1000000000
Recommit = 10000000000
Noverify = false
[Eth.TxPool]
Locals = []
NoLocals = true
Journal = "transactions.rlp"
Rejournal = 3600000000000
PriceLimit = 1000000000
PriceBump = 10
AccountSlots = 512
GlobalSlots = 10000
AccountQueue = 256
GlobalQueue = 5000
Lifetime = 10800000000000
[Node]
IPCPath = "geth.ipc"
HTTPHost = "localhost"
NoUSB = true
InsecureUnlockAllowed = false
HTTPPort = 8545
HTTPVirtualHosts = ["localhost"]
HTTPModules = ["eth", "net", "web3", "txpool", "parlia"]
WSPort = 8546
WSModules = ["net", "web3", "eth"]
[Node.P2P]
MaxPeers = 30
NoDiscovery = false
BootstrapNodes = ["enode://1cc4534b14cfe351ab740a1418ab944a234ca2f702915eadb7e558a02010cb7c5a8c295a3b56bcefa7701c07752acd5539cb13df2aab8ae2d98934d712611443@52.71.43.172:30311","enode://28b1d16562dac280dacaaf45d54516b85bc6c994252a9825c5cc4e080d3e53446d05f63ba495ea7d44d6c316b54cd92b245c5c328c37da24605c4a93a0d099c4@34.246.65.14:30311","enode://5a7b996048d1b0a07683a949662c87c09b55247ce774aeee10bb886892e586e3c604564393292e38ef43c023ee9981e1f8b335766ec4f0f256e57f8640b079d5@35.73.137.11:30311"]
StaticNodes = ["enode://f3cfd69f2808ef64838abd8786342c0b22fdd28268703c8d6812e26e109f9a7cb2b37bd49724ebb46c233289f22da82991c87345eb9a2dadeddb8f37eeb259ac@18.180.28.21:30311","enode://ae74385270d4afeb953561603fcedc4a0e755a241ffdea31c3f751dc8be5bf29c03bf46e3051d1c8d997c45479a92632020c9a84b96dcb63b2259ec09b4fde38@54.178.30.104:30311","enode://d1cabe083d5fc1da9b510889188f06dab891935294e4569df759fc2c4d684b3b4982051b84a9a078512202ad947f9240adc5b6abea5320fb9a736d2f6751c52e@54.238.28.14:30311","enode://f420209bac5324326c116d38d83edfa2256c4101a27cd3e7f9b8287dc8526900f4137e915df6806986b28bc79b1e66679b544a1c515a95ede86f4d809bd65dab@54.178.62.117:30311","enode://c0e8d1abd27c3c13ca879e16f34c12ffee936a7e5d7b7fb6f1af5cc75c6fad704e5667c7bbf7826fcb200d22b9bf86395271b0f76c21e63ad9a388ed548d4c90@54.65.247.12:30311","enode://f1b49b1cf536e36f9a56730f7a0ece899e5efb344eec2fdca3a335465bc4f619b98121f4a5032a1218fa8b69a5488d1ec48afe2abda073280beec296b104db31@13.114.199.41:30311","enode://4924583cfb262b6e333969c86eab8da009b3f7d165cc9ad326914f576c575741e71dc6e64a830e833c25e8c45b906364e58e70cdf043651fd583082ea7db5e3b@18.180.17.171:30311","enode://4d041250eb4f05ab55af184a01aed1a71d241a94a03a5b86f4e32659e1ab1e144be919890682d4afb5e7afd837146ce584d61a38837553d95a7de1f28ea4513a@54.178.99.222:30311","enode://b5772a14fdaeebf4c1924e73c923bdf11c35240a6da7b9e5ec0e6cbb95e78327690b90e8ab0ea5270debc8834454b98eca34cc2a19817f5972498648a6959a3a@54.170.158.102:30311","enode://f329176b187cec87b327f82e78b6ece3102a0f7c89b92a5312e1674062c6e89f785f55fb1b167e369d71c66b0548994c6035c6d85849eccb434d4d9e0c489cdd@34.253.94.130:30311","enode://cbfd1219940d4e312ad94108e7fa3bc34c4c22081d6f334a2e7b36bb28928b56879924cf0353ad85fa5b2f3d5033bbe8ad5371feae9c2088214184be301ed658@54.75.11.3:30311","enode://c64b0a0c619c03c220ea0d7cac754931f967665f9e148b92d2e46761ad9180f5eb5aaef48dfc230d8db8f8c16d2265a3d5407b06bedcd5f0f5a22c2f51c2e69f@54.216.208.163:30311","enode://352a361a9240d4d23bb6fab19cc6dc5a5fc6921abf19de65afe13f1802780aecd67c8c09d8c89043ff86947f171d98ab06906ef616d58e718067e02abea0dda9@79.125.105.65:30311","enode://bb683ef5d03db7d945d6f84b88e5b98920b70aecc22abed8c00d6db621f784e4280e5813d12694c7a091543064456ad9789980766f3f1feb38906cf7255c33d6@54.195.127.237:30311","enode://11dc6fea50630b68a9289055d6b0fb0e22fb5048a3f4e4efd741a7ab09dd79e78d383efc052089e516f0a0f3eacdd5d3ffbe5279b36ecc42ad7cd1f2767fdbdb@46.137.182.25:30311","enode://21530e423b42aed17d7eef67882ebb23357db4f8b10c94d4c71191f52955d97dc13eec03cfeff0fe3a1c89c955e81a6970c09689d21ecbec2142b26b7e759c45@54.216.119.18:30311","enode://d61a31410c365e7fcd50e24d56a77d2d9741d4a57b295cc5070189ad90d0ec749d113b4b0432c6d795eb36597efce88d12ca45e645ec51b3a2144e1c1c41b66a@34.204.129.242:30311","enode://bb91215b1d77c892897048dd58f709f02aacb5355aa8f50f00b67c879c3dffd7eef5b5a152ac46cdfb255295bec4d06701a8032456703c6b604a4686d388ea8f@75.101.197.198:30311","enode://786acbdf5a3cf91b99047a0fd8305e11e54d96ea3a72b1527050d3d6f8c9fc0278ff9ef56f3e56b3b70a283d97c309065506ea2fc3eb9b62477fd014a3ec1a96@107.23.90.162:30311","enode://4653bc7c235c3480968e5e81d91123bc67626f35c207ae4acab89347db675a627784c5982431300c02f547a7d33558718f7795e848d547a327abb111eac73636@54.144.170.236:30311","enode://c6ffd994c4ef130f90f8ee2fc08c1b0f02a6e9b12152092bf5a03dd7af9fd33597d4b2e2000a271cc0648d5e55242aeadd6d5061bb2e596372655ba0722cc704@54.147.151.108:30311","enode://99b07e9dc5f204263b87243146743399b2bd60c98f68d1239a3461d09087e6c417e40f1106fa606ccf54159feabdddb4e7f367559b349a6511e66e525de4906e@54.81.225.170:30311","enode://1479af5ea7bda822e8747d0b967309bced22cad5083b93bc6f4e1d7da7be067cd8495dc4c5a71579f2da8d9068f0c43ad6933d2b335a545b4ae49a846122b261@52.7.247.132:30311","enode://43562d35f274d9e93f5ccac484c7cb185eabc746dbc9f3a56c36dc5a9ef05a3282695de7694a71c0bf4600651f49395b2ee7a6aaef857db2ac896e0fcbe6b518@35.73.15.198:30311","enode://08867e57849456fc9b0b00771f53e87ca6f2dd618c23b34a35d0c851cd484a4b7137905c5b357795025b368e4f8fe4c841b752b0c28cc2dbbf41a03d048e0e24@35.74.39.234:30311"]
ListenAddr = ":30311"
EnableMsgEvents = false
[Node.HTTPTimeouts]
ReadTimeout = 30000000000
WriteTimeout = 30000000000
IdleTimeout = 120000000000
Uma coisa a observar aqui é que, se você já conhece vários outros nós confiáveis, pode colocá-los na matriz StaticNodes. Quaisquer nós nesta matriz serão conectados automaticamente na inicialização do nó.
Em seguida, para iniciar seu Witness Node, você executará o seguinte comando.
## inicia um nó completo
geth --config ./config.toml --datadir ./node --cache 18000 --rpc.allow-unprotected-txs --txlookuplimit 0
Se você tem os requisitos de hardware em execução, o seguinte executará um Validator Node ao invés de um Witness Node:
## gera a chave de consenso e entra com a senha
geth account new --datadir ./node echo {your-password} > password.txt
geth --config ./config.toml --datadir ./node --syncmode snap -unlock {your-validator-address} --password password.txt --mine --allow-insecure-unlock --cache 18000
Depois de executá-los, você verá nos logs do seu terminal que você está começando a procurar por pares e começará a sincronizar com os dados deles. Você precisará de um pouco de paciência depois de executar este comando, pois pode levar várias horas para sincronizar um nó até a ponta.
Conclusão
Parabéns! Se todas as etapas foram seguidas e você conseguiu se conectar a outros pares para sincronizar seu nó, você executará com êxito seu próprio BSC Full Node. Dependendo da sua região local, você pode achar mais fácil ou mais difícil encontrar pares para compartilhar dados para sincronizar sua cadeia até a ponta. A chave neste processo é a paciência.
Se você deixar o programa seguir seu curso, eventualmente terá sucesso. Agora você é o mestre de seu próprio destino blockchain. Você pode enviar transações a serem confirmadas para a blockchain sem depender de terceiros, pois pode rotear todo o seu tráfego para o nó que está executando pessoalmente!
Assine nossa newsletter para mais artigos e guias sobre a Ethereum. Se você tiver algum comentário, sinta-se à vontade para entrar em contato conosco via Twitter. Você sempre pode conversar conosco em nosso servidor da comunidade Discord, que apresenta alguns dos desenvolvedores mais legais que você já conheceu :)
Esse artigo foi escrito por Noah Hein e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.
Abrace a oportunidade de elevar sua jornada de desenvolvimento para um nível superior. A execução de nós é apenas o começo; os builds incríveis da WEB3DEV representam a chave de entrada para o emocionante cenário web3. 🚀🧑💻
Não perca tempo, 👉inscreva-se👈 agora mesmo e comece a desbravar o universo Blockchain!
Seja também WEB3DEV!
Oldest comments (0)