/// <summary> /// Select sponsors for targets addresses, the caller must be the owner or master of target addresses. </summary> /// <param name="targets"> required <seealso cref="Address"/> array </param> /// <param name="sponsors"> required <seealso cref="Address"/> array </param> /// <param name="gas"> required int gas </param> /// <param name="gasCoef"> required byte gasCoef </param> /// <param name="expiration"> required int recommendation value is 720 </param> /// <param name="keyPair"> required <seealso cref="ECKeyPair"/> </param> /// <returns> <seealso cref="TransferResult"/> /// throw ClientIOException network error. </returns> public static TransferResult SelectSponsor(Address[] targets, Address[] sponsors, int gas, byte gasCoef, int expiration, ECKeyPair keyPair) { if (targets == null) { throw ClientArgumentException.Exception($"{nameof(targets)} is null"); } if (sponsors == null) { throw ClientArgumentException.Exception($"{nameof(sponsors)} is null"); } AbiDefinition abi = ProtoTypeContract.DefaultContract.FindAbiDefinition("selectSponsor"); if (abi == null) { throw new Exception("Can not find abi master method"); } ToClause[] clauses = new ToClause[targets.Length]; for (int index = 0; index < targets.Length; index++) { clauses[index] = ProtoTypeContract.BuildToClause( ProtoTypeContract.ContractAddress, abi, targets[index].ToHexString(Prefix.ZeroLowerX), sponsors[index].ToHexString(Prefix.ZeroLowerX) ); } return(InvokeContractMethod(clauses, gas, gasCoef, expiration, keyPair)); }
/// <summary> /// Set master user, the caller must be the owner or master of target addresses. </summary> /// <param name="targets"> <seealso cref="Address"/> arrays as target address. </param> /// <param name="newMasters"> <seealso cref="Address"/> arrays as new master address. </param> /// <param name="gas"> contract invoker gas </param> /// <param name="gasCoef"> gas coef </param> /// <param name="expiration"> expiration, suggest 720 </param> /// <param name="keyPair"> private key <seealso cref="ECKeyPair"/> </param> /// <returns> <seealso cref="TransferResult"/> </returns> /// <exception cref="ClientIOException"> network error. </exception> public static TransferResult SetMasterAddress(Address[] targets, Address[] newMasters, int gas, byte gasCoef, int expiration, ECKeyPair keyPair) { if (targets == null) { throw ClientArgumentException.Exception("targets is null"); } if (newMasters == null) { throw ClientArgumentException.Exception("newMasters in null"); } if (targets.Length != newMasters.Length) { throw ClientArgumentException.Exception("targets size must equal to newMasters size. "); } AbiDefinition abi = ProtoTypeContract.DefaultContract.FindAbiDefinition("setMaster"); if (abi == null) { throw new Exception("Can not find abi master method"); } ToClause[] clauses = new ToClause[targets.Length]; for (int index = 0; index < targets.Length; index++) { clauses[index] = ProtoTypeContract.BuildToClause(ProtoTypeContract.ContractAddress, abi, targets[index].ToHexString(Prefix.ZeroLowerX), newMasters[index].ToHexString(Prefix.ZeroLowerX)); } return(InvokeContractMethod(clauses, gas, gasCoef, expiration, keyPair)); }
/// <summary> /// Set user plan, the caller must be the owner or master of target addresses. </summary> /// <param name="targets"> <seealso cref="Address"/> array. </param> /// <param name="credits"> <seealso cref="Amount"/> array. </param> /// <param name="recoveryRates"> <seealso cref="Amount"/> array. thor per seconds. </param> /// <returns> <seealso cref="TransferResult"/> </returns> /// <exception cref="ClientIOException"> network error. </exception> public static TransferResult SetCreditPlans(Address[] targets, Amount[] credits, Amount[] recoveryRates, int gas, byte gasCoef, int expiration, ECKeyPair keyPair) { if (targets == null) { throw ClientArgumentException.Exception($"{nameof(targets)} is null"); } if (credits == null) { throw ClientArgumentException.Exception($"{nameof(credits)} is null"); } if (recoveryRates == null) { throw ClientArgumentException.Exception($"{nameof(recoveryRates)} is null"); } if (targets.Length != credits.Length || targets.Length != recoveryRates.Length) { throw ClientArgumentException.Exception("users.length must equal to credits.length and equal to recoveries.length"); } AbiDefinition abi = ProtoTypeContract.DefaultContract.FindAbiDefinition("setCreditPlan"); if (abi == null) { throw new Exception("Can not find abi master method"); } ToClause[] clauses = new ToClause[targets.Length]; for (int index = 0; index < targets.Length; index++) { clauses[index] = ProtoTypeContract.BuildToClause( ProtoTypeContract.ContractAddress, abi, targets[index].ToHexString(Prefix.ZeroLowerX), credits[index].ToBigInteger(), recoveryRates[index].ToBigInteger()); } return(InvokeContractMethod(clauses, gas, gasCoef, expiration, keyPair)); }