예제 #1
0
    public IPromise DeployContract(string bytecode, uint feeAssetId = 0, Action <TransactionConfirmationData> resultCallback = null)
    {
        if (!Authorization.IsAuthorized)
        {
            return(Promise.Rejected(new InvalidOperationException("Isn't Authorized!")));
        }
        var operation = new ContractCallOperationData
        {
            Registrar = SpaceTypeId.CreateOne(SpaceType.Account, Authorization.Current.UserNameData.Value.Account.Id.ToUintId),
            Value     = new AssetData(0, SpaceTypeId.CreateOne(SpaceType.Asset, feeAssetId)),
            Code      = bytecode.OrEmpty(),
            Callee    = null
        };

        return(Authorization.ProcessTransaction(new TransactionBuilder().AddOperation(operation), operation.Value.AssetId, resultCallback));
    }
        protected override OperationData Deserialize(JArray value, Type objectType)
        {
            if (value.IsNullOrEmpty() || value.Count != 2)
            {
                return(null);
            }
            var type = (ChainTypes.Operation)Convert.ToInt32(value.First);

            switch (type)
            {
            case ChainTypes.Operation.Transfer:
                return(TransferOperationData.Create(value.Last as JObject));

            //case ChainTypes.Operation.TransferToAddress:
            //case ChainTypes.Operation.OverrideTransfer:
            case ChainTypes.Operation.AccountCreate:
                return(AccountCreateOperationData.Create(value.Last as JObject));

            //case ChainTypes.Operation.AccountUpdate:
            //case ChainTypes.Operation.AccountWhitelist:
            //case ChainTypes.Operation.AccountAddressCreate:
            //case ChainTypes.Operation.AssetCreate:
            //case ChainTypes.Operation.AssetUpdate:
            //case ChainTypes.Operation.AssetUpdateBitasset:
            //case ChainTypes.Operation.AssetUpdateFeedProducers:
            case ChainTypes.Operation.AssetIssue:
                return(AssetIssueOperationData.Create(value.Last as JObject));

            //case ChainTypes.Operation.AssetReserve:
            //case ChainTypes.Operation.AssetFundFeePool:
            //case ChainTypes.Operation.AssetPublishFeed:
            //case ChainTypes.Operation.AssetClaimFees:
            case ChainTypes.Operation.ProposalCreate:
                return(ProposalCreateOperationData.Create(value.Last as JObject));

            //case ChainTypes.Operation.ProposalUpdate:
            //case ChainTypes.Operation.ProposalDelete:
            //case ChainTypes.Operation.CommitteeMemberCreate:
            //case ChainTypes.Operation.CommitteeMemberUpdate:
            //case ChainTypes.Operation.CommitteeMemberUpdateGlobalParameters:
            //case ChainTypes.Operation.CommitteeMemberActivate:
            //case ChainTypes.Operation.CommitteeMemberDeactivate:
            //case ChainTypes.Operation.CommitteeFrozenBalanceDeposit:
            //case ChainTypes.Operation.CommitteeFrozenBalanceWithdraw:
            //case ChainTypes.Operation.VestingBalanceCreate:
            //case ChainTypes.Operation.VestingBalanceWithdraw:
            //case ChainTypes.Operation.BalanceClaim:
            //case ChainTypes.Operation.BalanceFreeze:
            //case ChainTypes.Operation.BalanceUnfreeze:
            //case ChainTypes.Operation.ContractCreate:
            case ChainTypes.Operation.ContractCall:
                return(ContractCallOperationData.Create(value.Last as JObject));

            //case ChainTypes.Operation.ContractInternalCreate:
            //case ChainTypes.Operation.ContractInternalCall:
            //case ChainTypes.Operation.ContractSelfdestruct:
            //case ChainTypes.Operation.ContractUpdate:
            //case ChainTypes.Operation.ContractFundPool:
            //case ChainTypes.Operation.ContractWhitelist:
            //case ChainTypes.Operation.Sidechain_ETH_CreateAddress:
            //case ChainTypes.Operation.Sidechain_ETH_ApproveAddress:
            //case ChainTypes.Operation.Sidechain_ETH_Deposit:
            //case ChainTypes.Operation.Sidechain_ETH_SendDeposit:
            //case ChainTypes.Operation.Sidechain_ETH_Withdraw:
            //case ChainTypes.Operation.Sidechain_ETH_SendWithdraw:
            //case ChainTypes.Operation.Sidechain_ETH_ApproveWithdraw:
            //case ChainTypes.Operation.Sidechain_ETH_UpdateContractAddress:
            //case ChainTypes.Operation.SidechainIssue:
            //case ChainTypes.Operation.SidechainBurn:
            //case ChainTypes.Operation.Sidechain_ERC20_RegisterToken:
            //case ChainTypes.Operation.Sidechain_ERC20_DepositToken:
            //case ChainTypes.Operation.Sidechain_ERC20_SendDepositToken:
            //case ChainTypes.Operation.Sidechain_ERC20_WithdrawToken:
            //case ChainTypes.Operation.Sidechain_ERC20_SendWithdrawToken:
            //case ChainTypes.Operation.Sidechain_ERC20_ApproveTokenWithdraw:
            //case ChainTypes.Operation.Sidechain_ERC20_Issue:
            //case ChainTypes.Operation.Sidechain_ERC20_Burn:
            //case ChainTypes.Operation.Sidechain_BTC_CreateAddress:
            //case ChainTypes.Operation.Sidechain_BTC_CreateIntermediateDeposit:
            //case ChainTypes.Operation.Sidechain_BTC_IntermediateDeposit:
            //case ChainTypes.Operation.Sidechain_BTC_Deposit:
            //case ChainTypes.Operation.Sidechain_BTC_Withdraw:
            //case ChainTypes.Operation.Sidechain_BTC_Aggregate:
            //case ChainTypes.Operation.Sidechain_BTC_ApproveAggregate:
            //case ChainTypes.Operation.BlockReward:
            default:
                CustomTools.Console.DebugError("Unexpected operation type:", type, '\n', value);
                return(null);
            }
        }