package admin import ( "chain" "chain/runtime" ) const ( SetFeeCollectorEvent = "SetFeeCollector" ) var ( feeCollectorAddr address ) func init() { caller := runtime.OriginCaller() feeCollectorAddr = caller } func GetFeeCollector() address { return feeCollectorAddr } func SetFeeCollector(cur realm, addr address) { caller := runtime.OriginCaller() if caller != admin { panic("admin access required to set fee collector") } if !addr.IsValid() { panic("invalid address") } oldAddr := feeCollectorAddr feeCollectorAddr = addr chain.Emit( SetFeeCollectorEvent, "admin", caller.String(), "oldAddr", oldAddr.String(), "newAddr", addr.String(), ) } func IsFeeCollector(address address) bool { return address == feeCollectorAddr }