/// <summary> /// A default constructor of Wallet service. (Need to initialized from a ContractService object.) /// </summary> /// <param name="contract">A wallet contract object</param> /// <param name="contractService">A wallet contract service object</param> /// <param name="db">LiteDB database object</param> /// <param name="userPrivateKey">User's private key</param> /// <param name="api">Insight-based compatible API (>0.4)</param> /// <param name="TransferFee">Fee for token transfer</param> /// <returns>A wallet service is used to obtain all the ledger from the wallet. Private key is used to create the ledger on the user's behalf.</returns> internal WalletService(WalletContract contract, ContractService contractService, LiteDatabase db, BitcoinSecret userPrivateKey, IInsightAPI api, decimal TransferFee) { this.TransferFee = TransferFee; this.userPrivateKey = userPrivateKey; this.contractService = contractService; this.contract = contract; this.api = api; this.db = db; byte[] myByte = Encoding.ASCII.GetBytes(contract.ID); var encrypted = NBitcoin.Crypto.Hashes.RIPEMD160(myByte, myByte.Length); var hashID = encrypted.ByteArrayToString(); ledger = db.GetCollection <Ledger>($"Ledger-{hashID}"); account = db.GetCollection <Account>($"Account-{hashID}"); ownerAddress = new BitcoinPubKeyAddress(contract.OwnerPublicAddress, contractService.MainNetwork); }
/// <summary> /// A constructor of contract service /// </summary> /// <param name="api">Bitpay Insight compatible API (>0.4)</param> /// <param name="connectionString">LiteDB connection string</param> /// <param name="network">NBitcoin-compatible blockchain network</param> /// <returns>A contract service is used to manage electronic money contract in data store.</returns> public ContractService(string connectionString, IInsightAPI api, Network network) { ContractSetup(connectionString, api, network); }
/// <summary> /// A constructor of contract service /// </summary> /// <param name="api">Bitpay Insight compatible API (>0.4)</param> /// <param name="connectionString">LiteDB connection string</param> /// <returns>A contract service is used to manage electronic money contract in data store.</returns> public ContractService(string connectionString, IInsightAPI api) { var network = NBitcoin.Altcoins.Digibyte.Instance.Mainnet; ContractSetup(connectionString, api, network); }
/// <summary> /// A constructor of helper class for provider part which handle document management and consent ask. /// </summary> /// <param name="privateKey">User's private key</param> /// <param name="network">NBitcoin-compatible blockchain network</param> /// <param name="builder">Option builder for IStorageManager</param> /// <param name="api">Insight-based block explorer (>0.4)</param> public ProviderHelper(string privateKey, IInsightAPI api, IOptionBuilder builder, Network network = null) : base(privateKey, network, api) { storageManager = new GDriveStorageManager(); storageManager.SetBuilder(builder); }