Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Deploy a contract to the block chain. </summary>
        /// <param name="contractHex"> the contract hex string with </param>
        /// <param name="gas">  the gas </param>
        /// <param name="gasCoef">  the gas coefficient </param>
        /// <param name="expiration"> the expiration </param>
        /// <param name="keyPair">  private keypair </param>
        public static TransferResult DeployContract(String contractHex, int gas, byte gasCoef, int expiration, ECKeyPair keyPair)
        {
            ToClause toClause = BuildDeployClause(contractHex);

            if (toClause == null)
            {
                throw ClientArgumentException.Exception("The contract hex string is null");
            }
            ToClause[] toClauses = new ToClause[1];
            toClauses[0] = toClause;
            return(InvokeContractMethod(toClauses, gas, gasCoef, expiration, keyPair));
        }
Exemplo n.º 4
0
        /// <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));
        }