async Task <Contract> GetContract(byte[] privateKey, byte[] publicKey)
    {
        var writer = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithHTTP("http://127.0.0.1:46658/rpc")
                     //.WithWebSocket("ws://127.0.0.1:46657/websocket")
                     .Create();

        var reader = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithHTTP("http://127.0.0.1:46658/query")
                     //.WithWebSocket("ws://127.0.0.1:9999/queryws")
                     .Create();

        var client = new DAppChainClient(writer, reader)
        {
            Logger = Debug.unityLogger
        };

        // required middleware
        client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[] {
            new NonceTxMiddleware(publicKey, client),
            new SignedTxMiddleware(privateKey)
        });

        var contractAddr = await client.ResolveContractAddressAsync("BluePrint");

        var callerAddr = Address.FromPublicKey(publicKey);

        return(new Contract(client, contractAddr, callerAddr));
    }
Example #2
0
        private async Task <EvmContract> GetContract()
        {
            this.writer = RpcClientFactory.Configure()
                          .WithLogger(this.logger)
                          .WithWebSocket("ws://" + this.backendHost + ":46657/websocket")
                          .Create();

            this.reader = RpcClientFactory.Configure()
                          .WithLogger(this.logger)
                          .WithWebSocket("ws://" + this.backendHost + ":9999/queryws")
                          .Create();

            this.client = new DAppChainClient(this.writer, this.reader)
            {
                Logger = this.logger
            };

            // required middleware
            this.client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[]
            {
                new NonceTxMiddleware(this.publicKey, this.client),
                new SignedTxMiddleware(this.privateKey)
            });

            Address contractAddr = await this.client.ResolveContractAddressAsync("BlackJack");

            Address     callerAddr  = Address.FromPublicKey(this.publicKey);
            EvmContract evmContract = new EvmContract(this.client, contractAddr, callerAddr, this.abi);

            evmContract.EventReceived += EventReceivedHandler;
            return(evmContract);
        }
Example #3
0
        private async Task <EvmContract> GetContract(byte[] privateKey, byte[] publicKey, string abi)
        {
            ILogger    logger = NullLogger.Instance;
            IRpcClient writer = RpcClientFactory.Configure()
                                .WithLogger(logger)
                                .WithWebSocket("ws://127.0.0.1:46657/websocket")
                                .Create();

            IRpcClient reader = RpcClientFactory.Configure()
                                .WithLogger(logger)
                                .WithWebSocket("ws://127.0.0.1:9999/queryws")
                                .Create();

            DAppChainClient client = new DAppChainClient(writer, reader)
            {
                Logger = logger
            };

            // required middleware
            client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[]
            {
                new NonceTxMiddleware(publicKey, client),
                new SignedTxMiddleware(privateKey)
            });

            Address contractAddr = await client.ResolveContractAddressAsync("Tests");

            Address callerAddr = Address.FromPublicKey(publicKey);

            return(new EvmContract(client, contractAddr, callerAddr, abi));
        }
Example #4
0
        public async Task CreateContract(byte[] privateKey)
        {
            byte[]  publicKey  = CryptoUtils.PublicKeyFromPrivateKey(privateKey);
            Address callerAddr = Address.FromPublicKey(publicKey);

            IRpcClient writer = RpcClientFactory.Configure().WithLogger(Debug.unityLogger).WithWebSocket(WriterHost)
                                .Create();

            IRpcClient reader = RpcClientFactory.Configure().WithLogger(Debug.unityLogger).WithWebSocket(ReaderHost)
                                .Create();

            DAppChainClient client = new DAppChainClient(writer, reader)
            {
                Logger = Debug.unityLogger
            };

            client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[]
            {
                new NonceTxMiddleware(publicKey, client), new SignedTxMiddleware(privateKey)
            });

            client.AutoReconnect = false;

            await client.ReadClient.ConnectAsync();

            await client.WriteClient.ConnectAsync();

            Address contractAddr = await client.ResolveContractAddressAsync("ZombieBattleground");

            Contract oldContract = Contract;

            Contract = new Contract(client, contractAddr, callerAddr);
            ContractCreated?.Invoke(oldContract, Contract);
        }
Example #5
0
    public async Task <EvmContract> GetContract()
    {
        this.writer = RpcClientFactory.Configure()
                      .WithLogger(Debug.unityLogger)
                      .WithWebSocket("ws://extdev-plasma-us1.dappchains.com:80/websocket")
                      .Create();
        this.reader = RpcClientFactory.Configure()
                      .WithLogger(Debug.unityLogger)
                      .WithWebSocket("ws://extdev-plasma-us1.dappchains.com:80/queryws")
                      .Create();

        this.client = new DAppChainClient(this.writer, this.reader)
        {
            Logger = this.logger
        };

        this.client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[]
        {
            new NonceTxMiddleware(this.publicKey, this.client),
            new SignedTxMiddleware(this.privateKey)
        });
        await this.client.ReadClient.ConnectAsync();

        await this.client.WriteClient.ConnectAsync();

        var         calller     = Address.FromPublicKey(this.publicKey);
        EvmContract evmContract = new EvmContract(this.client, this.contractAddress, calller, GetAbi());

        //evmContract.EventReceived += this.EventReceiveHandler;
        await evmContract.Client.SubscribeToAllEvents();

        return(evmContract);
    }
    async Task <EvmContract> GetContract(byte[] privateKey, byte[] publicKey)
    {
        var writer = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithWebSocket("ws://127.0.0.1:46658/websocket")
                     .Create();

        var reader = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithWebSocket("ws://127.0.0.1:46658/queryws")
                     .Create();

        var client = new DAppChainClient(writer, reader)
        {
            Logger = Debug.unityLogger
        };

        // required middleware
        client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[]
        {
            new NonceTxMiddleware(publicKey, client),
            new SignedTxMiddleware(privateKey)
        });

        // ABI of the Solidity contract
        const string abi          = "[{\"constant\":false,\"inputs\":[{\"name\":\"_tileState\",\"type\":\"string\"}],\"name\":\"SetTileMapState\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"GetTileMapState\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"state\",\"type\":\"string\"}],\"name\":\"OnTileMapStateUpdate\",\"type\":\"event\"}]\r\n";
        var          contractAddr = await client.ResolveContractAddressAsync("TilesChain");

        var callerAddr = Address.FromPublicKey(publicKey);

        return(new EvmContract(client, contractAddr, callerAddr, abi));
    }
Example #7
0
    // Get's the contract as an object
    async Task <EvmContract> GetContract(byte[] privateKey, byte[] publicKey)
    {
        var writer = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithHTTP("http://127.0.0.1:46658/rpc")
                     .Create();

        var reader = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithHTTP("http://127.0.0.1:46658/query")
                     .Create();

        var client = new DAppChainClient(writer, reader)
        {
            Logger = Debug.unityLogger
        };

        // Required middleware
        client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[] {
            new NonceTxMiddleware(publicKey, client),
            new SignedTxMiddleware(privateKey)
        });

        // ABI of the Solidity contract
        string abi = simpleStoreABI.ToString();

        var contractAddr = new Address(simpleStoreAddress.ToString());
        var callerAddr   = Address.FromPublicKey(publicKey);

        return(new EvmContract(client, contractAddr, callerAddr, abi));
    }
    /// <summary>
    /// Connects to the DAppChain and returns an instance of a contract.
    /// </summary>
    /// <returns></returns>
    private async Task <EvmContract> GetContract()
    {
        this.writer = RpcClientFactory.Configure()
                      .WithLogger(this.logger)
                      .WithWebSocket("ws://" + this.backendHost + ":46657/websocket")
                      .Create();

        this.reader = RpcClientFactory.Configure()
                      .WithLogger(this.logger)
                      .WithWebSocket("ws://" + this.backendHost + ":9999/queryws")
                      .Create();

        this.client = new DAppChainClient(this.writer, this.reader)
        {
            Logger = this.logger
        };

        // required middleware
        this.client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[]
        {
            new NonceTxMiddleware(this.publicKey, this.client),
            new SignedTxMiddleware(this.privateKey)
        });

        // If 'truffle deploy' was used to deploy the contract,
        // you will have to use the contract address directly
        // instead of resolving it from contract name
        Address contractAddr = await this.client.ResolveContractAddressAsync("Blueprint");

        EvmContract evmContract = new EvmContract(this.client, contractAddr, this.address, this.abi);

        return(evmContract);
    }
Example #9
0
    public async void SignIn()
    {
        var privateKey = CryptoUtils.GeneratePrivateKey();
        var publicKey  = CryptoUtils.PublicKeyFromPrivateKey(privateKey);
        var callerAddr = Address.FromPublicKey(publicKey);

        this.statusTextRef.text = "Signed in as " + callerAddr.QualifiedAddress;

        var writer = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     //.WithHTTP("http://127.0.0.1:46658/rpc")
                     .WithWebSocket("ws://127.0.0.1:46658/websocket")
                     .Create();

        var reader = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     //.WithHTTP("http://127.0.0.1:46658/query")
                     .WithWebSocket("ws://127.0.0.1:46658/queryws")
                     .Create();

        var client = new DAppChainClient(writer, reader)
        {
            Logger = Debug.unityLogger
        };

        client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[] {
            new NonceTxMiddleware(publicKey, client),
            new SignedTxMiddleware(privateKey)
        });

        var contractAddr = await client.ResolveContractAddressAsync("BluePrint");

        this.contract = new Contract(client, contractAddr, callerAddr);

        // Subscribe to DAppChainClient.OnChainEvent to receive all events

        /*
         * client.OnChainEvent += (sender, e) =>
         * {
         *  var jsonStr = System.Text.Encoding.UTF8.GetString(e.Data);
         *  var data = JsonConvert.DeserializeObject<SampleEvent>(jsonStr);
         *  Debug.Log(string.Format("Chain Event: {0}, {1}, {2} from block {3}", data.Method, data.Key, data.Value, e.BlockHeight));
         * };
         */

        // Subscribe to DAppChainClient.ChainEventReceived to receive events from a specific smart contract
        await this.contract.Client.SubscribeToAllEvents();

        this.contract.EventReceived += (sender, e) =>
        {
            var jsonStr = System.Text.Encoding.UTF8.GetString(e.Data);
            var data    = JsonConvert.DeserializeObject <SampleEvent>(jsonStr);
            Debug.Log(string.Format("Contract Event: {0}, {1}, {2} from block {3}", data.Method, data.Key, data.Value, e.BlockHeight));
        };
    }
    public async void SignIn()
    {
        var privateKey = CryptoUtils.GeneratePrivateKey();
        var publicKey  = CryptoUtils.PublicKeyFromPrivateKey(privateKey);
        var callerAddr = Address.FromPublicKey(publicKey);

        this.statusTextRef.text = "Signed in as " + callerAddr.QualifiedAddress;

        var writer = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithWebSocket("ws://127.0.0.1:46658/websocket")
                     .Create();

        var reader = RpcClientFactory.Configure()
                     .WithLogger(Debug.unityLogger)
                     .WithWebSocket("ws://127.0.0.1:46658/queryws")
                     .Create();

        var client = new DAppChainClient(writer, reader)
        {
            Logger = Debug.unityLogger
        };

        // required middleware
        client.TxMiddleware = new TxMiddleware(new ITxMiddlewareHandler[]
        {
            new NonceTxMiddleware(publicKey, client),
            new SignedTxMiddleware(privateKey)
        });

        const string abi          = "[{\"constant\":false,\"inputs\":[{\"name\":\"_tileState\",\"type\":\"string\"}],\"name\":\"SetTileMapState\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"GetTileMapState\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"state\",\"type\":\"string\"}],\"name\":\"OnTileMapStateUpdate\",\"type\":\"event\"}]\r\n";
        var          contractAddr = await client.ResolveContractAddressAsync("TilesChain");

        contract = new EvmContract(client, contractAddr, callerAddr, abi);

        // Subscribe to DAppChainClient.ChainEventReceived to receive events from a specific smart contract
        this.contract.EventReceived += (sender, e) =>
        {
            OnTileMapStateUpdateEvent tileMapStateUpdateEvent = e.DecodeEventDto <OnTileMapStateUpdateEvent>();
            Debug.Log(string.Format("Contract Event: {0}, {1}, from block {2}", e.EventName, tileMapStateUpdateEvent.State, e.BlockHeight));
        };
    }
Example #11
0
        public static async Task <EvmContract> GetEvmContract(byte[] privateKey, byte[] publicKey, string abi, CustomTxMiddlewareFunc customTxMiddlewareFunc = null)
        {
            ILogger    logger = Debug.unityLogger;
            IRpcClient writer = RpcClientFactory.Configure()
                                .WithLogger(logger)
                                .WithWebSocket("ws://127.0.0.1:46658/websocket")
                                .Create();

            IRpcClient reader = RpcClientFactory.Configure()
                                .WithLogger(logger)
                                .WithWebSocket("ws://127.0.0.1:46658/queryws")
                                .Create();

            DAppChainClient client = new DAppChainClient(writer, reader)
            {
                Logger = logger
            };

            // required middleware
            ITxMiddlewareHandler[] txMiddlewareHandlers;
            if (customTxMiddlewareFunc != null)
            {
                txMiddlewareHandlers = customTxMiddlewareFunc(client, privateKey, publicKey);
            }
            else
            {
                txMiddlewareHandlers = new ITxMiddlewareHandler[]
                {
                    new NonceTxMiddleware(publicKey, client),
                    new SignedTxMiddleware(privateKey)
                };
            }

            client.TxMiddleware = new TxMiddleware(txMiddlewareHandlers);

            Address contractAddress = await client.ResolveContractAddressAsync("Tests");

            Address callerAddress = Address.FromPublicKey(publicKey);

            return(new EvmContract(client, contractAddress, callerAddress, abi));
        }