以太坊定制网络:如何限制合同的创建?

时间:2018-10-30 01:36:28

标签: ethereum 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

但是..

a。矿工如何过滤交易?我需要为此创建带有特定逻辑的自己的以太坊分支吗?

b。有什么方法可以限制合同的创建吗?还是只允许部署一个合同的方法?

c。我可以使用web3js查询交易并检查合同的创建,但是如果我拥有采矿/封口机节点,是否可以删除合同?

d。也许我可以禁止提交合同的地址?有可能吗?

2 个答案:

答案 0 :(得分:0)

我认为在以太坊中,由于它是开放网络和公共区块链,因此无法控制谁可以发送交易。如果您希望实施此想法,则必须切换到私有区块链,我建议使用hyperledger

即使您分叉,任何有权访问创世纪文件的人都可以连接到网络,然后在其节点上挖掘合同创建交易。

答案 1 :(得分:0)

如果您愿意进行一些开发工作,则可以派出geth删除CREATE和CREATE2操作码。这样做可能会导致您无法创建新的操作码。

如果您控制链上的大多数哈希功能,则可以防止所有其他人使用这些操作码来挖掘交易。如果有人连接到您的链并挖掘了无效的交易,则您的节点会将此区块视为无效并继续开采您的区块。