It is necessary?
chenjiaweiprimeledger opened this issue · 1 comments
chenjiaweiprimeledger commented
- org.ethereum.core.TransactionExecutor#create
AccountState existingAddr = cacheTrack.getAccountState(newContractAddress);
if (existingAddr != null && existingAddr.isContractExist(blockchainConfig)) {
execError("Trying to create a contract with existing contract address: 0x" + toHexString(newContractAddress));
m_endGas = BigInteger.ZERO;
return;
}
existingAddr will not exists, because the nonce of the sender has been checked in org.ethereum.core.TransactionExecutor#init
- org.ethereum.core.TransactionExecutor#create
//In case of hashing collisions (for TCK tests only), check for any balance before createAccount()
BigInteger oldBalance = track.getBalance(newContractAddress);
cacheTrack.createAccount(tx.getContractAddress());
cacheTrack.addBalance(newContractAddress, oldBalance);
It is rude to transfer balance of same-address contract to the new contract ?
mkalinin commented
- Relates to ethereum/EIPs#684
- Relates only to tests from #ethereum/tests repository, it hardly could happen on main or any other network.