예제 #1
0
    /// Gets the DNA based on the input fields
    private IEnumerator GetDNA()
    {
        // convert string to hex to work the same way as Javascript Example
        string id = int.Parse(inputGetDNAItemID.text).ToString("x");

        var req            = new EthCallUnityRequest(url);
        var contract       = new Contract(null, itemManagerABI, itemManagerContractAddress);
        var function       = contract.GetFunction("getDNA");
        var callInput      = function.CreateCallInput(id, inputGetDNAAddress.text);
        var blockParameter = Nethereum.RPC.Eth.DTOs.BlockParameter.CreateLatest();

        yield return(req.SendRequest(callInput, blockParameter));

        // convert from Hex to String
        string result = HexBigIntegerConvertorExtensions.HexToBigInteger(req.Result, false).ToString();

        inputGetDNADNA.text = result;
    }
예제 #2
0
        // Array request, string service, Action<string> callback, string callbackUrl
        public async Task <Texture2D> SendTransaction()
        {
            // Uri for transaction
            string baseRequestUri = "meta://transaction?", trxRequestUri = "";

            // URI for to, value, data
            baseRequestUri += "t=" + to + "&v=" + HexBigIntegerConvertorExtensions.ToHex(value, true) + "&d=" + HexStringUTF8ConvertorExtensions.ToHexUTF8(data);

            // URI for usage
            baseRequestUri += "&u=" + usage;

            // URI for callbackUrl and callback
            if (!string.IsNullOrEmpty(callbackUrl))
            {
                baseRequestUri += "&c=" + WWW.EscapeURL(callbackUrl);
            }
            else
            {
                baseRequestUri += "&c=https%3A%2F%2F0s5eebblre.execute-api.ap-northeast-2.amazonaws.com/dev?key=" + session;
            }

            Debug.Log("Transaction baseRequestUri: " + baseRequestUri);

            // URI for IPFS
            IPFSClass ipfs = new IPFSClass();

            trxRequestUri = await ipfs.IpfsAdd(baseRequestUri);

            Debug.Log("Transaction trxRequestUri(IPFS hash): " + trxRequestUri);

            // Polling request using timer
            timer = new Timer {
                Interval = 2000
            };
            timer.Elapsed  += HttpRequest;
            timer.AutoReset = true;
            timer.Enabled   = true;
            timer.Start();

            // Make QRCode for request
            QRcode.QRcode metaQR = new QRcode.QRcode();
            return(metaQR.MakeQR(256, trxRequestUri));
        }
예제 #3
0
        WalletTx AddOutgoingTx(string from, string signedTx, WalletTag tagFor)
        {
            var address = db.AddrGet(from);
            var tx      = new Transaction(signedTx.HexToByteArray());
            var date    = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
            var fee     = HexBigIntegerConvertorExtensions.HexToBigInteger(tx.GasLimit.ToHex(), false) * HexBigIntegerConvertorExtensions.HexToBigInteger(tx.GasPrice.ToHex(), false);
            var amount  = HexBigIntegerConvertorExtensions.HexToBigInteger(tx.Value.ToHex(), false);

            logger.LogDebug("outgoing tx: amount: {0}, fee: {1}", amount, fee);
            // create chain tx
            var ctx = new ChainTx(tx.Hash.ToHex(true), date, fee, -1, 0);

            db.ChainTxs.Add(ctx);
            var networkStatus = new ChainTxNetworkStatus(ctx, ChainTxStatus.Unconfirmed, date, signedTx.HexToByteArray());

            db.ChainTxNetworkStatus.Add(networkStatus);
            // create tx input
            var i = new TxInput(tx.Hash.ToHex(true), from, 0, amount + fee);

            i.ChainTx    = ctx;
            i.WalletAddr = address;
            db.TxInputs.Add(i);
            // create tx output
            var o = new TxOutput(tx.Hash.ToHex(true), tx.ReceiveAddress.ToHex(true), 0, amount);

            o.ChainTx = ctx;
            db.TxOutputs.Add(o);
            if (tagFor != null)
            {
                db.TxOutputsForTag.Add(new TxOutputForTag {
                    TxOutput = o, Tag = tagFor
                });
            }
            // create wallet tx
            var wtx = new WalletTx {
                ChainTx = ctx, Address = address, Direction = WalletDirection.Outgoing
            };

            db.WalletTxs.Add(wtx);
            return(wtx);
        }