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)); }
//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()); }
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); }
//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)); }
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; }