Exemplo n.º 1
0
        public void DoTransactionTest()
        {
            MicroCashAddress address1 = new MicroCashAddress("micro(QSM3PKS3EOZBUZO4A)cash");
            MicroCashAddress address2 = new MicroCashAddress("micro(IZ2P65UBDJKTV6ZIN)cash");
            MicroCashAddress address3 = new MicroCashAddress("micro(R7MEB3HTYHB55XLO2)cash");
            MicroCashAddress address4 = new MicroCashAddress("micro(JZBHXGUIISIID5JWS)cash");

            try
            {
                //feed the 3 seed accounts
                SendTX(m_ThinUser.m_Accounts[0], address2.GetAddressBytes(), 50);
                SendTX(m_ThinUser.m_Accounts[0], address3.GetAddressBytes(), 50);
                SendTX(m_ThinUser.m_Accounts[0], address4.GetAddressBytes(), 50);

                //send 50 to #3 so it has 100
                SendTX(m_ThinUser.m_Accounts[1], address3.GetAddressBytes(), 50);

                //send 100 to #4 so it has 150
                SendTX(m_ThinUser.m_Accounts[2], address4.GetAddressBytes(), 100);

                //send 50 back to #2 and #3
                SendTX(m_ThinUser.m_Accounts[3], address2.GetAddressBytes(), 50);
                SendTX(m_ThinUser.m_Accounts[3], address3.GetAddressBytes(), 50);

                //send back
                SendTX(m_ThinUser.m_Accounts[1], address1.GetAddressBytes(), 50);
                SendTX(m_ThinUser.m_Accounts[2], address1.GetAddressBytes(), 50);
                SendTX(m_ThinUser.m_Accounts[3], address1.GetAddressBytes(), 50);
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
Exemplo n.º 2
0
        internal SendTxResult SendTx(MicroCashAddress address, double amount, byte[] info)
        {
            MicroCashTransaction tx = new MicroCashTransaction();

            Array.Copy(m_KeyPair.PublicKeyBytes, 1, tx.m_Extra1, 0, 64);    //this isnt always sent, but may as well just copy it
            tx.m_dwAddressID = this.AddressId;
            if (tx.m_dwAddressID == 0)
            {
                tx.m_dwType = 1;
            }

            tx.m_FromAddress = m_KeyPair.GetAddressBytes();
            tx.m_RecvAddress = address.GetAddressBytes();

            tx.m_qAmount = (Int64)(amount * 10000);

            if (info != null)
            {
                int nLen = info.Length;
                if (nLen > 8) nLen = 8;
                for (int x = 0; x < 8; x++) tx.m_Info[x] = 0;
                Array.Copy(info, tx.m_Info, nLen);
            }

            byte[] hash = tx.GetHash(false);
            //string s = MicroCashFunctions.ToHex(hash);
            tx.m_Signature = m_KeyPair.Sign(hash);

            MicroCashRpcClient mcrpc = new MicroCashRpcClient(GlobalSettings.RpcUrl);
            SendTransactionRpcResponse sendtx = mcrpc.SendTransaction(MicroCashHelper.ToHex(tx.GetByteBuffer(true)));

            SendTxResult result = new SendTxResult();
            result.IsSent = sendtx.sent;
            result.ErrorMessage = mcrpc.ErrorMessage;

            return result;
        }