From 5015372135eb37f1f780b7227ecf753b976ac12f Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Wed, 24 Mar 2021 11:05:40 +0300 Subject: [PATCH] [#58] alphabet: Use alphabet and IR lists from chain Signed-off-by: Alex Vanin --- alphabet/alphabet_contract.go | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/alphabet/alphabet_contract.go b/alphabet/alphabet_contract.go index dbfe95e..d6b5671 100644 --- a/alphabet/alphabet_contract.go +++ b/alphabet/alphabet_contract.go @@ -73,10 +73,6 @@ func Neo() int { return neo.BalanceOf(runtime.GetExecutingScriptHash()) } -func irList(ctx storage.Context) []common.IRNode { - return common.InnerRingListViaStorage(ctx, netmapKey) -} - func currentEpoch(ctx storage.Context) int { netmapContractAddr := storage.Get(ctx, netmapKey).(interop.Hash160) return contract.Call(netmapContractAddr, "epoch", contract.ReadOnly).(int) @@ -109,8 +105,8 @@ func checkPermission(ir []common.IRNode) bool { func Emit() bool { ctx := storage.GetReadOnlyContext() - innerRingKeys := irList(ctx) - if !checkPermission(innerRingKeys) { + alphabet := common.AlphabetNodes() + if !checkPermission(alphabet) { panic("invalid invoker") } @@ -130,10 +126,11 @@ func Emit() bool { gas.Transfer(contractHash, proxyAddr, proxyGas, nil) runtime.Log("utility token has been emitted to proxy contract") - gasPerNode := gasBalance / 2 * 7 / 8 / len(innerRingKeys) + innerRing := common.InnerRingNodes() + gasPerNode := gasBalance / 2 * 7 / 8 / len(innerRing) if gasPerNode != 0 { - for _, node := range innerRingKeys { + for _, node := range innerRing { address := contract.CreateStandardAccount(node.PublicKey) gas.Transfer(contractHash, address, gasPerNode, nil) } @@ -149,7 +146,7 @@ func Vote(epoch int, candidates []interop.PublicKey) { index := index(ctx) name := name(ctx) - multiaddr := common.InnerRingMultiAddressViaStorage(ctx, netmapKey) + multiaddr := common.AlphabetAddress() if !runtime.CheckWitness(multiaddr) { panic("invalid invoker") }