}
public void saveCode(byte[] addr, byte[] code) {
if (code == null) return;
AccountState state = getAccountState(addr);
if (state == null) return;
if (logger.isDebugEnabled())
logger.debug("Saving code: \n address:\t [{}], \n code:\t\t [{}]",
Hex.toHexString(addr),
Hex.toHexString(code));
ContractDetails details = getContractDetails(addr);
details.setCode(code);
byte[] codeHash = HashUtil.sha3(code);
state.setCodeHash(codeHash);
accountStateDB.update(addr, state.getEncoded());
contractDetailsDB.put(addr, details.getEncoded());
if (logger.isDebugEnabled())
logger.debug("Code saved: \n accountstate:\t [{}]\n codeHash:\t [{}]\n details RLP:\t [{}]",
Hex.toHexString(state.getEncoded()),
Hex.toHexString(codeHash),
Hex.toHexString(details.getEncoded()));
}