protected override void OnBalanceChanging(ApplicationEngine engine, UInt160 account, AccountState state, BigInteger amount) { DistributeGas(engine, account, state); if (amount.IsZero) { return; } if (state.Votes.Length == 0) { return; } foreach (ECPoint pubkey in state.Votes) { StorageItem storage_validator = engine.Snapshot.Storages.GetAndChange(CreateStorageKey(Prefix_Validator, pubkey.ToArray())); ValidatorState state_validator = ValidatorState.FromByteArray(storage_validator.Value); state_validator.Votes += amount; storage_validator.Value = state_validator.ToByteArray(); } StorageItem storage_count = engine.Snapshot.Storages.GetAndChange(CreateStorageKey(Prefix_ValidatorsCount)); ValidatorsCountState state_count = ValidatorsCountState.FromByteArray(storage_count.Value); state_count.Votes[state.Votes.Length - 1] += amount; storage_count.Value = state_count.ToByteArray(); }
protected override void OnBalanceChanging(ApplicationEngine engine, UInt160 account, AccountState state, BigInteger amount) { DistributeGas(engine, account, state); if (amount.IsZero) { return; } if (state.VoteTo != null) { StorageItem storage_validator = engine.Snapshot.Storages.GetAndChange(CreateStorageKey(Prefix_Candidate, state.VoteTo.ToArray())); CandidateState state_validator = storage_validator.GetInteroperable <CandidateState>(); state_validator.Votes += amount; } }