비탈릭이 제시한 하드포크 시험 코드가 pyethereum에 올라왔네요.
https://github.com/ethereum/pyethereum/commit/611252b630981a93bd348cc3ed155a75ad71158b
def initialize(self, parent):
# DAO fork
if self.number == self.config["DAO_FORK_BLKNUM"]:
dao_main_addr = utils.normalize_address(self.config["DAO_MAIN_ADDR"])
for acct in map(utils.normalize_address, self.config["DAO_ADDRESS_LIST"]):
self.delta_balance(dao_main_addr, self.get_balance(addr))
self.set_balance(addr, 0)
self.set_code(dao_main_addr, self.config["DAO_NEWCODE"])
----
(아마도 for acct in map... 에서 acct 가 addr 가 되어야 맞는 것 같지만....)
기본적으로 차일드 다오에 있는 모든 밸런스를 전부 메인다오로 옮기고, 다오 컨트랙트 코드를 "DAO_NEWCODE" 라고 치환하는 것입니다. 새 다오코드는 단순 리펀드 코드가 될 것으로 보입니다.
Parity 클라이언트를 만들고 있는 Gavin 도 패러티 코드를 올렸습니다.
https://github.com/ethcore/parity/pull/1483/commits/fd9d10a0957dd6548a62f3f8b0bb1a9a794c7187
+ fn on_new_block(&self, block: &mut ExecutedBlock) {
+ let dao_fork_blknum = 2000000;
+ let main_dao = Address::from_str("bb9bc244d798123fde783fcc1c72d3bb8c189413").unwrap();
+ let child_daos: Vec<Address> = vec![];
+ let new_dao_code: Bytes = vec![];
+ // TODO: check trigger function
+ if block.fields().header.number == dao_fork_blknum {
+ if block.fields().header.gas_limit <= 4_000_000.into() {
+ let mut state = block.fields_mut().state;
+ for child in child_daos.iter() {
+ let b = state.balance(child);
+ state.transfer_balance(child, &main_dao, &b);
+ }
+ state.reset_code(&main_dao, new_dao_code);
+ }
+ }
+ }
=========
Gavin 에 따르면 최종 하드포크 버전이 다음 주 쯤에 나올 것이라고 하는군요.
https://blog.ethcore.io/the-dos-vector-and-the-soft-fork-for-miners/
https://github.com/ethereum/pyethereum/commit/611252b630981a93bd348cc3ed155a75ad71158b
def initialize(self, parent):
# DAO fork
if self.number == self.config["DAO_FORK_BLKNUM"]:
dao_main_addr = utils.normalize_address(self.config["DAO_MAIN_ADDR"])
for acct in map(utils.normalize_address, self.config["DAO_ADDRESS_LIST"]):
self.delta_balance(dao_main_addr, self.get_balance(addr))
self.set_balance(addr, 0)
self.set_code(dao_main_addr, self.config["DAO_NEWCODE"])
----
(아마도 for acct in map... 에서 acct 가 addr 가 되어야 맞는 것 같지만....)
기본적으로 차일드 다오에 있는 모든 밸런스를 전부 메인다오로 옮기고, 다오 컨트랙트 코드를 "DAO_NEWCODE" 라고 치환하는 것입니다. 새 다오코드는 단순 리펀드 코드가 될 것으로 보입니다.
Parity 클라이언트를 만들고 있는 Gavin 도 패러티 코드를 올렸습니다.
https://github.com/ethcore/parity/pull/1483/commits/fd9d10a0957dd6548a62f3f8b0bb1a9a794c7187
+ fn on_new_block(&self, block: &mut ExecutedBlock) {
+ let dao_fork_blknum = 2000000;
+ let main_dao = Address::from_str("bb9bc244d798123fde783fcc1c72d3bb8c189413").unwrap();
+ let child_daos: Vec<Address> = vec![];
+ let new_dao_code: Bytes = vec![];
+ // TODO: check trigger function
+ if block.fields().header.number == dao_fork_blknum {
+ if block.fields().header.gas_limit <= 4_000_000.into() {
+ let mut state = block.fields_mut().state;
+ for child in child_daos.iter() {
+ let b = state.balance(child);
+ state.transfer_balance(child, &main_dao, &b);
+ }
+ state.reset_code(&main_dao, new_dao_code);
+ }
+ }
+ }
=========
Gavin 에 따르면 최종 하드포크 버전이 다음 주 쯤에 나올 것이라고 하는군요.
https://blog.ethcore.io/the-dos-vector-and-the-soft-fork-for-miners/