I have created custom blockchain using go-ethereum
My network has 2 miners nodes with unlocked accounts and then a public node with a locked account that only broadcast transactions to the miners
I run the public node like this:
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'
The thing is that if someone sends a contract creation to the public node (using MyEtherWallet for example) the contract submition will be broadcasted and mined.
I found this: https://ethereum.stackexchange.com/questions/11091/is-there-any-way-to-disable-contract-creation-on-a-private-network
But..
a. how can a miner filter the transactions? do i need to create my own fork of go-ethereum with specific logic for this?
b. Is there any way to limit the contract creations? or a way to allow only one contract deployed?
c. I can query the transactions using web3js and check for contract creations, but is there a way to delete the contracts if i own the mining/sealers nodes?
d. Maybe i can ban an address that is submitting a contract? is that possible?