diff options
author | Wei-Ning Huang <w@dexon.org> | 2019-03-19 18:47:24 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2019-04-09 21:32:58 +0800 |
commit | b62994e237147468d55fa2aa5013d68ff5278580 (patch) | |
tree | 1537d512f5e22d30eb33ff2c4474cb87ba97056a /core/vm/oracle_contracts.go | |
parent | be7d019ae93a6c044dfa4f3c87695c94d3e88b5c (diff) | |
download | dexon-b62994e237147468d55fa2aa5013d68ff5278580.tar dexon-b62994e237147468d55fa2aa5013d68ff5278580.tar.gz dexon-b62994e237147468d55fa2aa5013d68ff5278580.tar.bz2 dexon-b62994e237147468d55fa2aa5013d68ff5278580.tar.lz dexon-b62994e237147468d55fa2aa5013d68ff5278580.tar.xz dexon-b62994e237147468d55fa2aa5013d68ff5278580.tar.zst dexon-b62994e237147468d55fa2aa5013d68ff5278580.zip |
core: vm: emit event when transfering owner (#277)
Diffstat (limited to 'core/vm/oracle_contracts.go')
-rw-r--r-- | core/vm/oracle_contracts.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/core/vm/oracle_contracts.go b/core/vm/oracle_contracts.go index 62261a36b..f21700d86 100644 --- a/core/vm/oracle_contracts.go +++ b/core/vm/oracle_contracts.go @@ -1058,6 +1058,16 @@ func (s *GovernanceState) emitCRSProposed(round *big.Int, crs common.Hash) { }) } +// event NodeOwnershipTransfered(address indexed NodeAddress, address indexed NewOwnerAddress); +func (s *GovernanceState) emitNodeOwnershipTransfered(nodeAddr, newNodeAddr common.Address) { + s.StateDB.AddLog(&types.Log{ + Address: GovernanceContractAddress, + Topics: []common.Hash{GovernanceABI.Events["NodeOwnershipTransfered"].Id(), + nodeAddr.Hash(), newNodeAddr.Hash()}, + Data: []byte{}, + }) +} + // event Staked(address indexed NodeAddress, uint256 Amount); func (s *GovernanceState) emitStaked(nodeAddr common.Address, amount *big.Int) { s.StateDB.AddLog(&types.Log{ @@ -2373,6 +2383,11 @@ func (g *GovernanceContract) transferNodeOwnership(newOwner common.Address) ([]b return nil, errExecutionReverted } + newOffset := g.state.NodesOffsetByAddress(newOwner) + if newOffset.Cmp(big.NewInt(0)) >= 0 { + return nil, errExecutionReverted + } + node := g.state.Node(offset) g.state.PutNodeOffsets(node, big.NewInt(0)) @@ -2380,6 +2395,8 @@ func (g *GovernanceContract) transferNodeOwnership(newOwner common.Address) ([]b g.state.PutNodeOffsets(node, offset) g.state.UpdateNode(offset, node) + g.state.emitNodeOwnershipTransfered(caller, newOwner) + return nil, nil } |