aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/oracle_contracts.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-03-19 18:47:24 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:58 +0800
commitb62994e237147468d55fa2aa5013d68ff5278580 (patch)
tree1537d512f5e22d30eb33ff2c4474cb87ba97056a /core/vm/oracle_contracts.go
parentbe7d019ae93a6c044dfa4f3c87695c94d3e88b5c (diff)
downloaddexon-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.go17
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
}