private TransactionReceipt FinishCycleTxReceipt(ulong blockIndex) { var tx = _transactionBuilder.InvokeTransactionWithGasPrice( UInt160Utils.Zero, ContractRegisterer.GovernanceContract, Utility.Money.Zero, GovernanceInterface.MethodFinishCycle, 0, UInt256Utils.ToUInt256(GovernanceContract.GetCycleByBlockNumber(_blockManager.GetHeight())) ); return(HardforkHeights.IsHardfork_9Active(blockIndex) ? new TransactionReceipt { Hash = tx.FullHash(SignatureUtils.ZeroNew, true), Status = TransactionStatus.Pool, Transaction = tx, Signature = SignatureUtils.ZeroNew, } : new TransactionReceipt { Hash = tx.FullHash(SignatureUtils.ZeroOld, false), Status = TransactionStatus.Pool, Transaction = tx, Signature = SignatureUtils.ZeroOld, }); }
private bool IsFinishCycleTx(Block block, Transaction tx) { var indexInCycle = block.Header.Index % StakingContract.CycleDuration; var cycle = block.Header.Index / StakingContract.CycleDuration; if (cycle > 0 && indexInCycle == 0 && tx.To.Equals(ContractRegisterer.GovernanceContract)) { var expectedTx = BuildSystemContractTx(ContractRegisterer.GovernanceContract, GovernanceInterface.MethodFinishCycle, UInt256Utils.ToUInt256(GovernanceContract.GetCycleByBlockNumber(block.Header.Index - 1))); return(CheckSystemTxEquality(expectedTx, tx)); } return(false); }
private bool IsDistributeCycleRewardsAndPenaltiesTx(Block block, Transaction tx) { var indexInCycle = block.Header.Index % StakingContract.CycleDuration; var cycle = block.Header.Index / StakingContract.CycleDuration; if (cycle > 0 && indexInCycle == StakingContract.AttendanceDetectionDuration && tx.To.Equals(ContractRegisterer.GovernanceContract)) { var expectedTx = BuildSystemContractTx(ContractRegisterer.GovernanceContract, GovernanceInterface.MethodDistributeCycleRewardsAndPenalties, UInt256Utils.ToUInt256(GovernanceContract.GetCycleByBlockNumber(block.Header.Index - 1))); return(CheckSystemTxEquality(expectedTx, tx)); } return(false); }
private TransactionReceipt BuildSystemContractTxReceipt(UInt160 contractAddress, string mehodSignature) { var transaction = _transactionBuilder.InvokeTransactionWithGasPrice( UInt160Utils.Zero, contractAddress, Money.Zero, mehodSignature, 0, UInt256Utils.ToUInt256(GovernanceContract.GetCycleByBlockNumber(_stateManager.LastApprovedSnapshot.Blocks.GetTotalBlockHeight())) ); return(new TransactionReceipt { Hash = transaction.FullHash(SignatureUtils.ZeroNew, true), Status = TransactionStatus.Pool, Transaction = transaction, Signature = SignatureUtils.ZeroNew, }); }
private TransactionReceipt MakeNextValidatorsTxReceipt() { var sk = Crypto.GeneratePrivateKey(); var pk = Crypto.ComputePublicKey(sk, false); var tx = _transactionBuilder.InvokeTransactionWithGasPrice( _wallet.EcdsaKeyPair.PublicKey.GetAddress(), ContractRegisterer.GovernanceContract, Money.Zero, GovernanceInterface.MethodChangeValidators, 0, UInt256Utils.ToUInt256(GovernanceContract.GetCycleByBlockNumber(_stateManager.LastApprovedSnapshot.Blocks.GetTotalBlockHeight())), (pk) ); var res = Signer.Sign(tx, _wallet.EcdsaKeyPair, true); Assert.False(_eventData.ContainsKey(res.Hash)); _eventData.Add(res.Hash, ByteString.CopyFrom(ContractEncoder.Encode(GovernanceInterface.EventChangeValidators, (pk)))); return(res); }
private TransactionReceipt MakeKeygenSendValuesTxReceipt() { var proposer = new BigInteger(0).ToUInt256(); var value = new Byte[0]; var tx = _transactionBuilder.InvokeTransactionWithGasPrice( _wallet.EcdsaKeyPair.PublicKey.GetAddress(), ContractRegisterer.GovernanceContract, Money.Zero, GovernanceInterface.MethodKeygenSendValue, 0, UInt256Utils.ToUInt256(GovernanceContract.GetCycleByBlockNumber(_stateManager.LastApprovedSnapshot.Blocks.GetTotalBlockHeight())), proposer, (value) ); var res = Signer.Sign(tx, _wallet.EcdsaKeyPair, true); Assert.False(_eventData.ContainsKey(res.Hash)); _eventData.Add(res.Hash, ByteString.CopyFrom(ContractEncoder.Encode(GovernanceInterface.EventKeygenSendValue, proposer, (value)))); return(res); }
private TransactionReceipt MakeCommitTransaction() { var biVarPoly = BiVarSymmetricPolynomial.Random(0); var commitment = biVarPoly.Commit().ToBytes(); var row = new Byte[0]; var tx = _transactionBuilder.InvokeTransactionWithGasPrice( _wallet.EcdsaKeyPair.PublicKey.GetAddress(), ContractRegisterer.GovernanceContract, Money.Zero, GovernanceInterface.MethodKeygenCommit, 0, UInt256Utils.ToUInt256(GovernanceContract.GetCycleByBlockNumber(_stateManager.LastApprovedSnapshot.Blocks.GetTotalBlockHeight())), commitment, new byte[][] { row } ); var res = Signer.Sign(tx, _wallet.EcdsaKeyPair, true); Assert.False(_eventData.ContainsKey(res.Hash)); _eventData.Add(res.Hash, ByteString.CopyFrom(ContractEncoder.Encode(GovernanceInterface.EventKeygenCommit, commitment, new byte[][] { row }))); return(res); }