示例#1
0
    private async Task CreateAddressAsync(BlockchainPermissions permissions)
    {
        // Create a new address
        Console.WriteLine("Create New address");
        var newAddress = await client.GetNewAddressAsync();

        newAddress.AssertOk();
        Console.WriteLine("New issue address: " + newAddress.Result);
        Console.WriteLine();

        // Give send/receive/issue permissions
        Console.WriteLine("Grant new chain permissions");
        var perms = await client.GrantAsync(new List <string>() { newAddress.Result }, permissions);

        Console.WriteLine(perms.RawJson);
        perms.AssertOk();

        // Issue a vote to the new address
        assetName = "asset_" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 24);
        Console.WriteLine("Give a new asset to the new address");
        var asset = await client.IssueAsync(newAddress.Result, assetName, 1, 1);

        Console.WriteLine(perms.RawJson);
        perms.AssertOk();

        address = newAddress.Result;
    }
        //Function to create a new address
        //Also gives it permissions and a single vote which can be sent
        private async Task CreateAddressAsync(BlockchainPermissions permissions)
        {
            // Create a new address
            var newAddress = await client.GetNewAddressAsync();

            newAddress.AssertOk();
            Console.WriteLine("New issue address: " + newAddress.Result);
            voterAddress = newAddress.Result;

            // Grant new address permissions (recieve permissions)
            Console.WriteLine("Grant new address permissions so it can vote");
            var perms = await client.GrantAsync(new List <string>() { newAddress.Result }, permissions);

            Console.WriteLine(perms.RawJson);
            perms.AssertOk();

            // Create a single vote to be granted to the new address (only one vote will ever
            // be given to an address)
            Console.WriteLine("Give the new address a single vote asset");
            var moreAsset = await client.IssueMoreAsync(voterAddress, "Votes", 1);

            Console.WriteLine(moreAsset.RawJson);
            moreAsset.AssertOk();

            // Associated the voter address with the voter in the database
            db.saveVotingAddress(voterAddress, db.getCurrentUser());
        }
        public Task <JsonRpcResponse <string> > RevokeFromAsync(string fromAddress, IEnumerable <string> toAddresses,
                                                                BlockchainPermissions permissions, decimal nativeAmount = 0M,
                                                                string comment = null, string commentTo = null, int startBlock = 0, int endBlock = 0)
        {
            var stringifiedAddresses = StringifyValues(toAddresses);
            var permissionsAsString  = FormatPermissions(permissions);

            return(ExecuteAsync <string>("revokefrom", 0, fromAddress, stringifiedAddresses, permissionsAsString));
        }
示例#4
0
        //Function to create a new address and display it in the GUI just to show
        //we are still connected to blockchain
        private async Task CreateAddressAsync(BlockchainPermissions permissions)
        {
            // Create a new address
            Console.WriteLine("Create New address");
            var newAddress = await client.GetNewAddressAsync();

            newAddress.AssertOk();
            Console.WriteLine("New issue address: " + newAddress.Result);
            newAddressEntry.Text = newAddress.Result;
        }
        private string FormatPermissions(BlockchainPermissions permissions)
        {
            StringBuilder builder = new StringBuilder();

            if ((int)(permissions & BlockchainPermissions.Connect) != 0)
            {
                builder.Append("connect");
            }
            if ((int)(permissions & BlockchainPermissions.Send) != 0)
            {
                if (builder.Length > 0)
                {
                    builder.Append(",");
                }
                builder.Append("send");
            }
            if ((int)(permissions & BlockchainPermissions.Receive) != 0)
            {
                if (builder.Length > 0)
                {
                    builder.Append(",");
                }
                builder.Append("receive");
            }
            if ((int)(permissions & BlockchainPermissions.Issue) != 0)
            {
                if (builder.Length > 0)
                {
                    builder.Append(",");
                }
                builder.Append("issue");
            }
            if ((int)(permissions & BlockchainPermissions.Mine) != 0)
            {
                if (builder.Length > 0)
                {
                    builder.Append(",");
                }
                builder.Append("mine");
            }
            if ((int)(permissions & BlockchainPermissions.Admin) != 0)
            {
                if (builder.Length > 0)
                {
                    builder.Append(",");
                }
                builder.Append("admin");
            }

            return(builder.ToString());
        }
示例#6
0
        private async Task <string> CreateAddressAsync(MultiChainClient client, BlockchainPermissions permissions)
        {
            // create an address...
            Console.WriteLine("*** getnewaddress ***");
            var newAddress = await client.GetNewAddressAsync();

            newAddress.AssertOk();
            Console.WriteLine("New issue address: " + newAddress.Result);
            Console.WriteLine();

            // grant permissions...
            Console.WriteLine("*** grant ***");
            var perms = await client.GrantAsync(new List <string>() { newAddress.Result }, permissions);

            Console.WriteLine(perms.RawJson);
            perms.AssertOk();

            return(newAddress.Result);
        }
示例#7
0
        //returns users associated address. if user has no address -> give user address -> return new address.
        //public async Task<string> getUserAddress()
        //{
        //    if (db.users.Where(list => list.User_ID == user_ID).Any())
        //    {
        //        return db.users.Where(list => list.User_ID == user_ID).Select(list => list.blockchainAddress).FirstOrDefault();
        //    }
        //    else
        //    {
        //        //get new address, get user for which address does not exist, add address to user record.
        //        var newAddress = await client.GetNewAddressAsync();
        //        newAddress.AssertOk();
        //        var userToEdit = db.users.Single(o => o.User_ID == user_ID);
        //        userToEdit.blockchainAddress = newAddress.Result;
        //        db.Entry(userToEdit).State = EntityState.Modified;
        //        await db.SaveChangesAsync();
        //        return newAddress.Result;
        //    }
        //}

        //true if user has specified permission
        public async Task <Boolean> hasPermission(BlockchainPermissions permissionType)
        {
            var permission = await client.ListAddressPermissionType(permissionType, userAddress);

            permission.AssertOk();
            if (permission.Result.Count > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }

            //var listPermissions = await client.ListPermissions(permissionType);
            //listPermissions.AssertOk();
            //foreach (var permission in listPermissions.Result)
            //{
            //    if(permission.Address.Equals(userAddress) && permission.Type.Equals(permissionType.ToString().ToLower()) ) {
            //        return true;
            //    }
            //}
            //return false;
        }
        public Task <JsonRpcResponse <string> > GrantFromAsync(string fromAddress, IEnumerable <string> toAddresses, BlockchainPermissions permissions, decimal nativeAmount = 0M,
                                                               string comment = null, string commentTo = null, int startBlock = 0, int endBlock = 0)
        {
            var stringifiedAddresses = this.StringifyValues(toAddresses);
            var permissionsAsString  = this.FormatPermissions(permissions);

            return(this.ExecuteAsync <string>("grantfrom", 0, fromAddress, stringifiedAddresses, permissionsAsString)); /*, nativeAmount, comment ?? string.Empty,
                                                                                                                         * commentTo ?? string.Empty, startBlock, endBlock);*/
        }
        public Task <JsonRpcResponse <List <ListPermissionsResponse> > > ListPermissions(BlockchainPermissions permissions)
        {
            var permissionsAsString = this.FormatPermissions(permissions);

            return(this.ExecuteAsync <List <ListPermissionsResponse> >("listpermissions", 0, permissionsAsString));
        }
        public Task <JsonRpcResponse <string> > GrantAsync(IEnumerable <string> addresses, BlockchainPermissions permissions,
                                                           decimal nativeAmount = 0M, string comment   = null,
                                                           string commentTo     = null, int startBlock = 0, int endBlock = 0)
        {
            var stringifiedAddresses = StringifyValues(addresses);
            var permissionsAsString  = FormatPermissions(permissions);

            return(ExecuteAsync <string>("grant", 0, stringifiedAddresses, permissionsAsString));
        }
示例#11
0
        private async Task<string> CreateAddressAsync(MultiChainClient client, BlockchainPermissions permissions)
        {
            // create an address...
            Console.WriteLine("*** getnewaddress ***");
            var newAddress = await client.GetNewAddressAsync();
            newAddress.AssertOk();
            Console.WriteLine("New issue address: " + newAddress.Result);
            Console.WriteLine();

            // grant permissions...
            Console.WriteLine("*** grant ***");
            var perms = await client.GrantAsync(new List<string>() { newAddress.Result }, permissions);
            Console.WriteLine(perms.RawJson);
            perms.AssertOk();

            return newAddress.Result;
        }