Example #1
0
 private static void OnPingTimerEvent(Object source, System.Timers.ElapsedEventArgs e)
 {
     // When the timer event is fired create a ping transaction
     AppServices.createSignPublishTransaction(
         AppModelConfig.TIMER.abi,
         pingTimerContractAdr,
         pingTimerSigningPrivateKey,
         "ping"
         );
 }
Example #2
0
 public object Put(AdjustDaylightSaving request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.TRUST.abi,
                AppServices.GetEcosystemAdr(request.ContractAdr).TrustContractAdr,
                request.SigningPrivateKey,
                "adjustDaylightSaving"
                ));
 }
Example #3
0
 public object Put(RetirePolicy request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.POLICY.abi,
                AppServices.GetEcosystemAdr(request.ContractAdr).PolicyContractAdr,
                request.SigningPrivateKey,
                "retirePolicy",
                request.PolicyHash.HexToByteArray()
                ));
 }
Example #4
0
 public object Post(CreateBond request) {
     // Submit and return the transaction hash of the broadcasted transaction
     return AppServices.createSignPublishTransaction(
         AppModelConfig.BOND.abi,
         AppServices.GetEcosystemAdr(request.ContractAdr).BondContractAdr,
         request.SigningPrivateKey,
         "createBond",
         request.Principal,
         (AppModelConfig.isEmptyHash(request.SecurityReferenceHash) ? AppModelConfig.EMPTY_HASH.HexToByteArray() : request.SecurityReferenceHash.HexToByteArray())
     );
 }
Example #5
0
 public object Put(RetireAdjustor request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.TRUST,
                AppServices.GetEcosystemAdr(request.ContractAdr).TrustContractAdr,
                request.SigningPrivateKey,
                "retireAdjustor",
                request.AdjustorHash.HexToByteArray()
                ));
 }
Example #6
0
 public object Put(RotateAuthKey request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.EXTACCESSI.abi,
                request.ContractAdr,
                request.SigningPrivateKey,
                "rotateKey",
                null
                ));
 }
Example #7
0
        // ********************************************************************************************
        // *** ECOSYSTEM TRANSACTIONS - Set Working Capital expenses, Adjust daylight saving, etc.
        // ********************************************************************************************

        public object Put(SetWcExpenses request)
        {
            // Submit and return the transaction hash of the broadcasted transaction
            return(AppServices.createSignPublishTransaction(
                       AppModelConfig.TRUST.abi,
                       AppServices.GetEcosystemAdr(request.ContractAdr).TrustContractAdr,
                       request.SigningPrivateKey,
                       "setWcExpenses",
                       request.Amount
                       ));
        }
Example #8
0
 public object Put(AddAuthKey request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.EXTACCESSI,
                request.ContractAdr,
                request.SigningPrivateKey,
                "addKey",
                request.KeyToAddAdr
                ));
 }
Example #9
0
 public object Post(ProcessBankPaymentAdvice request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.BANK.abi,
                AppServices.GetEcosystemAdr(request.ContractAdr).BankContractAdr,
                request.SigningPrivateKey,
                "processPaymentAdvice",
                request.AdviceIdx,
                request.BankTransactionIdx
                ));
 }
Example #10
0
 public object Put(SetExpectedSettlementAmount request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.SETTLEMENT.abi,
                AppServices.GetEcosystemAdr(request.ContractAdr).SettlementContractAdr,
                request.SigningPrivateKey,
                "setExpectedSettlementAmount",
                request.SettlementHash.HexToByteArray(),
                request.AdjustorHash.HexToByteArray(),
                request.ExpectedSettlementAmount
                ));
 }
Example #11
0
 public object Post(CreateSettlement request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.SETTLEMENT.abi,
                AppServices.GetEcosystemAdr(request.ContractAdr).SettlementContractAdr,
                request.SigningPrivateKey,
                "createSettlement",
                request.AdjustorHash.HexToByteArray(),
                (AppModelConfig.isEmptyHash(request.PolicyHash) ? AppModelConfig.EMPTY_HASH.HexToByteArray() : request.PolicyHash.HexToByteArray()),
                (AppModelConfig.isEmptyHash(request.DocumentHash) ? AppModelConfig.EMPTY_HASH.HexToByteArray() : request.DocumentHash.HexToByteArray())
                ));
 }
Example #12
0
 public object Put(UpdatePolicy request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.POLICY.abi,
                AppServices.GetEcosystemAdr(request.ContractAdr).PolicyContractAdr,
                request.SigningPrivateKey,
                "updatePolicy",
                request.AdjustorHash.HexToByteArray(),
                request.PolicyHash.HexToByteArray(),
                request.DocumentHash.HexToByteArray(),
                request.RiskPoints
                ));
 }
Example #13
0
 public object Post(CreateAdjustor request)
 {
     // Submit and return the transaction hash of the broadcasted transaction
     return(AppServices.createSignPublishTransaction(
                AppModelConfig.TRUST,
                AppServices.GetEcosystemAdr(request.ContractAdr).TrustContractAdr,
                request.SigningPrivateKey,
                "createAdjustor",
                request.Owner,
                request.SettlementApprovalAmount,
                request.PolicyRiskPointLimit,
                request.ServiceAgreementHash.HexToByteArray()
                ));
 }
Example #14
0
        public object Put(PingTimer request)
        {
            string timerContractAdr = AppServices.GetEcosystemAdr(request.ContractAdr).TimerContractAdr;

            // Activate or deactivate the auto ping scheduling functionality
            AppServices.configureTimerPing(timerContractAdr, request.SigningPrivateKey, request.AutoSchedulePingDuration);
            // Submit and return the transaction hash of the broadcasted ping transaction
            return(AppServices.createSignPublishTransaction(
                       AppModelConfig.TIMER.abi,
                       timerContractAdr,
                       request.SigningPrivateKey,
                       "ping"
                       ));
        }
Example #15
0
        public object Post(ProcessBankAccountCredit request)
        {
            // Convert the payment subject to a hash if it is a valid number
            if (uint.TryParse(request.PaymentSubject, out uint val) == true)
            {
                request.PaymentSubject = val.ToString("X64").EnsureHexPrefix();
            }

            // Submit and return the transaction hash of the broadcasted transaction
            return(AppServices.createSignPublishTransaction(
                       AppModelConfig.BANK.abi,
                       AppServices.GetEcosystemAdr(request.ContractAdr).BankContractAdr,
                       request.SigningPrivateKey,
                       "processAccountCredit",
                       request.BankTransactionIdx,
                       (ulong)request.AccountType,
                       request.PaymentAccountHashSender.HexToByteArray(),
                       request.PaymentSubject.HexToByteArray(),
                       request.CreditAmount
                       ));
        }
Example #16
0
        public object Post(DeployContracts request)
        {
            // Deploy the library contract and await until the transaction has been mined
            TransactionHash libTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.LIB.abi,
                AppModelConfig.LIB.bytecode,
                request.SigningPrivateKey,
                null);
            TransactionResult libTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = libTransactionHash.Hash
            });

            // Deploy the trust contract and await until the transaction has been mined
            TransactionHash trustTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.TRUST.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.TRUST.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                null);
            TransactionResult trustTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = trustTransactionHash.Hash
            });

            // Deploy the pool contract
            TransactionHash poolTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.POOL.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.POOL.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                trustTransResult.ContractAddress);
            TransactionResult poolTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = poolTransactionHash.Hash
            });

            // Deploy the bond contract
            TransactionHash bondTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.BOND.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.BOND.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                trustTransResult.ContractAddress);
            TransactionResult bondTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = bondTransactionHash.Hash
            });

            // Deploy the bank contract
            TransactionHash bankTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.BANK.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.BANK.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                trustTransResult.ContractAddress);
            TransactionResult bankTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = bankTransactionHash.Hash
            });

            // Deploy the policy contract
            TransactionHash policyTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.POLICY.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.POLICY.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                trustTransResult.ContractAddress);
            TransactionResult policyTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = policyTransactionHash.Hash
            });

            // Deploy the claim contract
            TransactionHash settlementTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.SETTLEMENT.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.SETTLEMENT.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                trustTransResult.ContractAddress);
            TransactionResult settlementTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = settlementTransactionHash.Hash
            });

            // Deploy the adjustor contract
            TransactionHash adjustorTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.ADJUSTOR.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.ADJUSTOR.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                trustTransResult.ContractAddress);
            TransactionResult adjustorTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = adjustorTransactionHash.Hash
            });

            // Deploy the timer contract
            TransactionHash timerTransactionHash = AppServices.createSignDeployContract(
                AppModelConfig.TIMER.abi,
                AppModelConfig.linkContractBytecode(AppModelConfig.TIMER.bytecode, "Lib", libTransResult.ContractAddress),
                request.SigningPrivateKey,
                trustTransResult.ContractAddress);
            TransactionResult timerTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = timerTransactionHash.Hash
            });

            // Submit and return the transaction hash of the broadcasted transaction
            TransactionHash initEcosytemHash = AppServices.createSignPublishTransaction(
                AppModelConfig.TRUST.abi,
                trustTransResult.ContractAddress,
                request.SigningPrivateKey,
                "initEcosystem",
                poolTransResult.ContractAddress,            // pool
                bondTransResult.ContractAddress,            // bond
                bankTransResult.ContractAddress,            // bank
                policyTransResult.ContractAddress,          // policy
                settlementTransResult.ContractAddress,      // settlement
                adjustorTransResult.ContractAddress,        // adjustor
                timerTransResult.ContractAddress,           // timer
                request.IsWinterTime
                );

            // Get the transaction result
            TransactionResult initTransResult = (TransactionResult)Get(new GetReceipt {
                TransactionHash = initEcosytemHash.Hash
            });

            // Return the addresses of the newly created contracts
            return(new EcosystemContractAddresses {
                TrustContractAdr = trustTransResult.ContractAddress,
                PoolContractAdr = poolTransResult.ContractAddress,
                BondContractAdr = bondTransResult.ContractAddress,
                BankContractAdr = bankTransResult.ContractAddress,
                PolicyContractAdr = policyTransResult.ContractAddress,
                SettlementContractAdr = settlementTransResult.ContractAddress,
                AdjustorContractAdr = adjustorTransResult.ContractAddress,
                TimerContractAdr = timerTransResult.ContractAddress
            });
        }