Я создал собственный блокчейн, используя go-ethereum
В моей сети есть 2 узла майнеров с разблокированными учетными записями, а затем общедоступный узел с заблокированной учетной записью, который только транслирует транзакции майнерам
Я запускаю публичный узел так:
geth --datadir standard1/ --syncmode 'full' --port 30392 --rpc --rpcport 9578 --rpccorsdomain '*' --rpcaddr 'MY PUBLIC ADDRESS HERE' --ws --wsaddr "MY PUBLIC ADDRESS HERE" --wsorigins "*" --wsport 9579 --wsapi 'db,eth,net,web3,txpool,miner' --networkid 22 --gasprice '1'
Дело в том, что если кто-то отправляет создание контракта общедоступному узлу (например, с помощью MyEtherWallet), то отправка контракта будет транслироваться и добываться.
Я нашел это: https://ethereum.stackexchange.com/questions/11091/is-there-any-way-to-disable-contract-creation-on-a-private-network
Но ..
а. как майнер может фильтровать транзакции? мне нужно создать свой собственный форк go-ethereum с определенной логикой для этого?
б. Есть ли способ ограничить создание контракта? или способ разрешить развертывание только одного контракта?
с. Я могу запрашивать транзакции с помощью web3js и проверять наличие контрактов, но есть ли способ удалить контракты, если я владею узлами майнинга / уплотнения?
d. Может быть, я могу забанить адрес, который отправляет контракт? это возможно?