Example #1
0
 private TokenFreezeMessage CreateTokenFreezeMessage(TokenFreeze tokenFreeze)
 {
     return(new TokenFreezeMessage
     {
         Amount = DoubleToLong(tokenFreeze.Amount),
         From = Wallet.Address,
         Symbol = tokenFreeze.Symbol
     });
 }
Example #2
0
        public string BuildTokenFreeze(TokenFreeze tokenFreeze)
        {
            Wallet.EnsureWalletIsReady();
            TokenFreezeMessage msgBean = CreateTokenFreezeMessage(tokenFreeze);

            byte[] msg       = EncodeTokenFreezeMessage(msgBean);
            byte[] signature = EncodeSignature(Sign(msgBean));
            byte[] stdTx     = EncodeStdTx(msg, signature);
            return(EncodeUtils.ByteArrayToHex(stdTx));
        }
        public TokenFreezeMessage(TokenFreeze tokenFreeze, Wallet wallet, TransactionOption options)
        {
            this.wallet  = wallet;
            this.options = options;

            this.message        = new TokenFreezeProto();
            this.message.From   = wallet.Address;
            this.message.Symbol = tokenFreeze.Symbol;
            this.message.Amount = StringDecimalToLong(tokenFreeze.Amount);
        }
        public static byte[] BuildTokenFreezeMessage(string coin, decimal amount, Wallet wallet)
        {
            string hrpFrom;

            byte[] addrDec;
            Bech32.Bech32Engine.Decode(wallet.Address, out hrpFrom, out addrDec);
            TokenFreeze tf = new TokenFreeze
            {
                Amount = (long)Decimal.Round(amount * 100000000),
                Symbol = coin,
                From   = ByteString.CopyFrom(addrDec)
            };
            var aminoMessage = AminoBuilder.buildAminoMessage(tf.ToByteArray(), AminoBuilder.AminoType.Freeze);
            StdSignBytesConverter signatureBytesConverter = new StdSignBytesConverter(tf, wallet);

            byte[] messageBytesForSign   = signatureBytesConverter.GetCanonicalBytesForSignature();
            var    signatureBytes        = wallet.Sign(messageBytesForSign);
            var    signatureBytesMessage = AminoBuilder.buildAminoSignature(signatureBytes, wallet);
            var    stdMsg = AminoBuilder.buildStandardTransaction(aminoMessage, signatureBytesMessage, "");

            return(stdMsg);
        }
        public void Freeze_Test()
        {
            Wallet wallet = Wallet.Open("{privateKey}", EnvironmentInfo.TESTNET);

            TokenFreeze tokenFreeze = new TokenFreeze()
            {
                Symbol = null,
                Amount = null
            };

            TransactionOption option = new TransactionOption()
            {
                Memo   = null,
                Source = 1,
                Data   = null
            };

            var api    = BinanceApiFactory.CreateApiClient(EnvironmentInfo.TESTNET);
            var result = api.Freeze(tokenFreeze, wallet, option);

            Assert.IsTrue(result != null);
        }
Example #6
0
        public void TokenFreezeTest()
        {
            //List<String> words = Arrays.asList("trial raw kiss bench silent crystal clever cloud chapter obvious error income mechanic attend army outer found cube tribe sort south possible scene fox".split(" "));
            //Wallet wallet = Wallet.createWalletFromMnemonicCode(words, BinanceDexEnvironment.TEST_NET);
            Wallet wallet = Wallet.FromPrivateKey("84c4226a24732e2d832e9d932779adfb9b95401ee607086967c7c5bba1e3a18e", BinanceDexEnvironment.TEST_NET);

            Assert.Equal("tbnb1mrslq6lhglm3jp7pxzlk8u4549pmtp9sgvn2rc", wallet.Address);

            wallet.AccountNumber = 0;
            wallet.Sequence      = 9L;
            wallet.ChainId       = "test-chain-n4b735";

            TransactionOption options = new TransactionOption {
                Memo = "", Source = 0, Data = null
            };
            TransactionRequest assembler = new TransactionRequest(wallet, options);

            TokenFreeze tokenFreeze = new TokenFreeze()
            {
                Amount = "1",
                Symbol = "NNB-C3F"
            };

            //TokenFreezeMessage msgBean = assembler.createTokenFreezeMessage(tf);
            //byte[] encodedMsg = assembler.encodeTokenFreezeMessage(msgBean);
            //Assert.assertEquals("e774b32d0a14d8e1f06bf747f71907c130bf63f2b4a943b584b012074e4e422d4333461880c2d72f", EncodeUtils.bytesToHex(encodedMsg));
            //byte[] signature = assembler.sign(msgBean);
            //Assert.assertEquals("9ceabe0262a75b0da7556303580f56a094486cc9938a728f903a57054061bd833288979fbc8dc5ee07743df5110cb773c25d9974f34158a4f6ed6ac6899740c2".toLowerCase(), EncodeUtils.bytesToHex(signature));
            //byte[] encodedSignature = assembler.encodeSignature(signature);

            //Assert.assertEquals("0a26eb5ae987210280ec8943329305e43b2e6112728423ef9f9a7e7125621c3545c2f30ce08bf83c12409ceabe0262a75b0da7556303580f56a094486cc9938a728f903a57054061bd833288979fbc8dc5ee07743df5110cb773c25d9974f34158a4f6ed6ac6899740c22009", EncodeUtils.bytesToHex(encodedSignature));
            //Assert.assertEquals( "9c01f0625dee0a28e774b32d0a14d8e1f06bf747f71907c130bf63f2b4a943b584b012074e4e422d4333461880c2d72f126c0a26eb5ae987210280ec8943329305e43b2e6112728423ef9f9a7e7125621c3545c2f30ce08bf83c12409ceabe0262a75b0da7556303580f56a094486cc9938a728f903a57054061bd833288979fbc8dc5ee07743df5110cb773c25d9974f34158a4f6ed6ac6899740c22009", EncodeUtils.bytesToHex(assembler.encodeStdTx(encodedMsg, encodedSignature)));

            string build = assembler.BuildTokenFreeze(tokenFreeze);

            Assert.Equal("9c01f0625dee0a28e774b32d0a14d8e1f06bf747f71907c130bf63f2b4a943b584b012074e4e422d4333461880c2d72f126c0a26eb5ae987210280ec8943329305e43b2e6112728423ef9f9a7e7125621c3545c2f30ce08bf83c12409ceabe0262a75b0da7556303580f56a094486cc9938a728f903a57054061bd833288979fbc8dc5ee07743df5110cb773c25d9974f34158a4f6ed6ac6899740c22009", build, true);
        }
 public List <TransactionMetadata> Freeze(TokenFreeze tokenFreeze, Wallet wallet, TransactionOption options, bool sync = true) =>
 FreezeAsync(tokenFreeze, wallet, options, sync).GetAwaiter().GetResult();
        //TODO:
        //public Task<List<TransactionMetadata>> MultiTransferAsync(MultiTransfer multiTransfer, Wallet wallet, TransactionOption options, bool sync = true)
        //{
        //    TransactionMessage message = new MultiTransferMessage(multiTransfer, wallet, options);
        //    return BroadcastAsync(sync, message.BuildMessageBody());
        //}
        public Task <List <TransactionMetadata> > FreezeAsync(TokenFreeze tokenFreeze, Wallet wallet, TransactionOption options, bool sync = true)
        {
            TransactionMessage message = new TokenFreezeMessage(tokenFreeze, wallet, options);

            return(BroadcastAsync(message.BuildMessageBody()));
        }