Я создал собственный блокчейн с помощью 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 с определенной логикой для этого?
б. Есть ли способ ограничить создание контрактов? или способ разрешить развертывание только одного контракта?
c. Я могу запрашивать транзакции с помощью web3js и проверять создание контрактов, но есть ли способ удалить контракты, если я владею узлами майнинга / герметизации?
d. Может быть, я могу заблокировать адрес, с которого оформляется договор? это возможно?