public void TestMethod_ExecuteSellOrder_Success() { var inmemory_storage = new AccountInMemoryStorage(); Wallet wallet = new Wallet(inmemory_storage, NETWORK_ID); wallet.RestoreAccount("", MERCHANT_PRIVATE_KEY); var node = new RPCClient("Test"); var res = wallet.Sync(node).Result; var result = wallet.LookForNewTrade(DISCOUNT_TOKEN, REWARD_TOKEN).Result; var trade = result.GetBlock(); var discount_token = new NonFungibleToken(); discount_token.TokenCode = trade.BuyTokenCode; discount_token.Denomination = trade.BuyAmount; discount_token.ExpirationDate = DateTime.Now + TimeSpan.FromDays(365); discount_token.SerialNumber = discount_token.CalculateHash(); discount_token.RedemptionCode = "TEST"; discount_token.Sign(MERCHANT_PRIVATE_KEY); //trade.Fee = trade.Fee * 2; //trade.FeeType = AuthorizationFeeTypes.BothParties; var execute = wallet.ExecuteSellOrder(trade, null, discount_token).Result; Assert.AreEqual(APIResultCodes.Success, execute.ResultCode); }
APIResultCodes SendDiscountToken(NonFungibleToken disount_token) { _SendTransferBlock = CreateSendDiscountTokenBlock(disount_token, _DiscountTokenBlock); var authorizer = new SendTransferAuthorizer(serviceAccount, accountCollection); return(authorizer.Authorize <SendTransferBlock>(ref _SendTransferBlock)); }
public void SendNonFungibleToken_1() { CreateFirstGenesisBlock(); DiscountTokenGenesis(); var disount_token = new NonFungibleToken(); disount_token.Denomination = 50; disount_token.TokenCode = "Custom.DISC"; disount_token.RedemptionCode = "12345"; disount_token.ExpirationDate = DateTime.Now + TimeSpan.FromDays(365); // one year disount_token.SerialNumber = disount_token.CalculateHash(); // Just set to some random string disount_token.Sign(PrivateKey1); var result = SendDiscountToken(disount_token); Assert.AreEqual(APIResultCodes.Success, result); var previous_GRFT_balance = _DiscountTokenBlock.Balances[LyraGlobal.OFFICIALTICKERCODE]; var new_GRFT_balance = _SendTransferBlock.Balances[LyraGlobal.OFFICIALTICKERCODE]; var previous_DISC_balance = _DiscountTokenBlock.Balances["Custom.DISC"]; var new_DISC_balance = _SendTransferBlock.Balances["Custom.DISC"]; Assert.AreEqual(0, previous_GRFT_balance - new_GRFT_balance - serviceAccount.GetLastServiceBlock().TransferFee); Assert.AreEqual(0, previous_DISC_balance - new_DISC_balance - 50); Assert.AreEqual(1799999899, _SendTransferBlock.Balances[LyraGlobal.OFFICIALTICKERCODE]); Assert.AreEqual(99950, _SendTransferBlock.Balances["Custom.DISC"]); }
APIResultCodes ProcessReceiveDiscountToken(NonFungibleToken discount_token) { var authorizer = new NewAccountAuthorizer(serviceAccount, accountCollection); var block = CreateReceiveDiscountBlockOnAcc2(discount_token); return(authorizer.Authorize <OpenWithReceiveTransferBlock>(ref block)); }
OpenWithReceiveTransferBlock CreateReceiveDiscountBlockOnAcc2(NonFungibleToken discount_token) { _OpenAccount2Block = new OpenWithReceiveTransferBlock { AccountID = AccountId2, AccountType = AccountTypes.Standard, ServiceHash = string.Empty, SourceHash = _SendTransferBlock.Hash, Fee = 0, FeeType = AuthorizationFeeTypes.NoFee, Balances = new Dictionary <string, decimal>() }; _OpenAccount2Block.Balances.Add("Custom.DISC", 50); if (discount_token != null) { _OpenAccount2Block.NonFungibleToken = discount_token; } _OpenAccount2Block.InitializeBlock(null, PrivateKey2, AccountId2); // _OpenAccountBlock.Signature = Signatures.GetSignature(PrivateKey2, _OpenAccountBlock.Hash); return(_OpenAccount2Block); }
public void ReceiveNonFungibleToken_5() { CreateFirstGenesisBlock(); DiscountTokenGenesis(); var encryptor = new ECC_DHA_AES_Encryptor(); var discount_token = new NonFungibleToken(); discount_token.Denomination = 50; discount_token.TokenCode = "Custom.DISC"; // disount_token.OriginHash = "some unique random string"; discount_token.ExpirationDate = DateTime.Now + TimeSpan.FromDays(365); discount_token.SerialNumber = discount_token.CalculateHash(); // Just set to some random string discount_token.RedemptionCode = encryptor.Encrypt(PrivateKey1, AccountId2, discount_token.SerialNumber, "12345678901234567890"); discount_token.Sign(PrivateKey1); SendDiscountToken(discount_token); ProcessReceiveDiscountToken(discount_token); var decryptor = new ECC_DHA_AES_Encryptor(); string decrypted_redemption_code = decryptor.Decrypt(PrivateKey2, AccountId1, _OpenAccount2Block.NonFungibleToken.SerialNumber, (_OpenAccount2Block.NonFungibleToken as NonFungibleToken).RedemptionCode); Assert.AreEqual("12345678901234567890", decrypted_redemption_code); }
public void SendNonFungibleToken_3() { CreateFirstGenesisBlock(); DiscountTokenGenesis(); var disount_token = new NonFungibleToken(); disount_token.Denomination = 1; //disount_token.OriginHash = "some unique random string"; disount_token.TokenCode = "Custom.DISC"; disount_token.RedemptionCode = "12345"; var result = SendDiscountToken(disount_token); Assert.AreEqual(APIResultCodes.InvalidNonFungibleAmount, result); }
public void SendNonFungibleToken_4_WRONG_TOKEN_CODE() { CreateFirstGenesisBlock(); DiscountTokenGenesis(); var disount_token = new NonFungibleToken(); disount_token.Denomination = 50; disount_token.TokenCode = LyraGlobal.OFFICIALTICKERCODE; //disount_token.OriginHash = "some unique random string"; disount_token.RedemptionCode = "12345"; var result = SendDiscountToken(disount_token); Assert.AreEqual(APIResultCodes.InvalidNonFungibleTokenCode, result); }
SendTransferBlock CreateSendDiscountTokenBlock(NonFungibleToken discount_token, TransactionBlock previousBlock) { decimal TransferFee = serviceAccount.GetLastServiceBlock().TransferFee; sbyte precision = _FirstGenesisBlock.Precision; //long atomicamount = (long)(50 * Math.Pow(10, precision)); SendTransferBlock sendBlock = new SendTransferBlock { AccountID = AccountId1, ServiceHash = string.Empty, DestinationAccountId = AccountId2, Balances = new Dictionary <string, decimal>(), Fee = TransferFee, FeeType = AuthorizationFeeTypes.Regular, FeeCode = LyraGlobal.OFFICIALTICKERCODE }; sendBlock.Balances.Add(LyraGlobal.OFFICIALTICKERCODE, previousBlock.Balances[LyraGlobal.OFFICIALTICKERCODE] - TransferFee); sendBlock.Balances.Add("Custom.DISC", previousBlock.Balances["Custom.DISC"] - 50); if (discount_token != null) { //sendBlock.NonFungibleTokens = new List<INonFungibleToken>(); //sendBlock.NonFungibleTokens.Add(discount_token); sendBlock.NonFungibleToken = discount_token; //if (discount_token.OriginHash == null) // discount_token.OriginHash = sendBlock.CalculateHash(); } sendBlock.InitializeBlock(previousBlock, PrivateKey1, AccountId1); //sendBlock.Signature = Signatures.GetSignature(PrivateKey1, sendBlock.Hash); return(sendBlock); }
public void ReceiveNonFungibleToken_3() { CreateFirstGenesisBlock(); DiscountTokenGenesis(); var disount_token = new NonFungibleToken(); disount_token.Denomination = 50; disount_token.TokenCode = "Custom.DISC"; // disount_token.OriginHash = "some unique random string"; disount_token.RedemptionCode = "12345678901234567890"; disount_token.Sign(PrivateKey1); SendDiscountToken(disount_token); var result = ProcessReceiveDiscountToken(disount_token); Assert.AreEqual(APIResultCodes.Success, result); Assert.AreEqual(50, _OpenAccount2Block.Balances["Custom.DISC"]); }
public void ReceiveNonFungibleToken_1() { CreateFirstGenesisBlock(); DiscountTokenGenesis(); var disount_token = new NonFungibleToken(); disount_token.Denomination = 50; disount_token.TokenCode = "Custom.DISC"; // disount_token.OriginHash = "some unique random string"; disount_token.RedemptionCode = "12345"; // THis will fail as the token is not signed SendDiscountToken(disount_token); var result = ProcessReceiveDiscountToken(null); Assert.AreEqual(APIResultCodes.SourceSendBlockNotFound, result); Assert.AreEqual(50, _OpenAccount2Block.Balances["Custom.DISC"]); }
private void UpdateNfTokenBalance(ExplorerDbContext context, Account account, BalanceSheetDto tokenBalance) { foreach (var tokenId in tokenBalance.Ids) { var existingToken = context.NonFungibleTokens.SingleOrDefault(p => p.Id.Equals(tokenId)); if (existingToken == null) { var nftoken = new NonFungibleToken { Chain = tokenBalance.ChainName, TokenSymbol = tokenBalance.Symbol, Id = tokenId, Account = account, }; account.NonFungibleTokens.Add(nftoken); } else { existingToken.Account = account; } } }
public void ReceiveNonFungibleToken_4() { CreateFirstGenesisBlock(); DiscountTokenGenesis(); var disount_token = new NonFungibleToken(); disount_token.Denomination = 50; disount_token.TokenCode = "Custom.DISC"; // disount_token.OriginHash = "some unique random string"; disount_token.RedemptionCode = "12345678901234567890"; disount_token.Sign(PrivateKey1); SendDiscountToken(disount_token); ProcessReceiveDiscountToken(disount_token); var encryptor = new ECC_DHA_AES_Encryptor(); string decrypted_redemption_code = encryptor.Decrypt(PrivateKey2, AccountId1, "54CRv2pEjNj8c3UBPv4AxYmEKEojmVdAagTpgSjHieAq", "54CRv2pEjNj8c3UBPv4AxYmEKEojmVdAagTpgSjHieAq"); //Assert.AreEqual("12345678901234567890", decrypted_redemption_code); }