/// <summary> /// Disbursement Testament method(遺言状と相続権の払い出し) /// </summary> /// <param name="RequesterAddress"></param> /// <param name="Familyname"></param> public void Disbursementtestament(Address RequesterAddress, string Familyname) { var InheritanceManagement = GetInheritanceManagementTableName(); if (!StateWriter.TryGetTableWriter <IBinaryTableWriter>(InheritanceManagement, out var InheritancemanageTable)) { return; } //親族チェック if (!InheritancemanageTable.TryGetValue(RequesterAddress.Encoded, out var familyname)) { return; } if (Familyname != (familyname.ToString())) { return; } //遺言状トークン情報(トークンID)の取得 var keyinfo = Familyname + "_Testament"; if (!InheritancemanageTable.TryGetValue(ByteString.Encode(keyinfo), out var tokenId)) { return; } var tokeninfo = tokenId.ToString(); //遺言者の死亡確認 var Diedinfokey = Familyname + "_DiedTestatorAddress"; if (!TryGetInternalValue(ByteString.Encode(Diedinfokey), out var TestatorAddress)) { return; } //相続要求者の鍵一致確認 var Inheritanceinfokey = Familyname + "_InheritanceAddress"; if (!TryGetInternalValue(ByteString.Encode(Inheritanceinfokey), out var inheritanceAddress)) { return; } var InheritanceAddress = PublicKeyAddress.Decode(inheritanceAddress); if (InheritanceAddress != RequesterAddress) { return; } //NFTテーブルの呼び出し var TestamentNFTTableName = GetTestamentNFTTableName(); if (!StateWriter.TryGetTableWriter <INFTTableWriter>(TestamentNFTTableName, out var nfttable)) { return; } nfttable.TransferToken(tokeninfo, RequesterAddress); }
/// <summary> /// Check if the entered information can be converted about publickey. /// </summary> /// <param name="text"></param> /// <returns>Inputaddress</returns> private Address Inputjudgement(string text) { Address inputaddress; try { var value = PublicKey.Parse(text); inputaddress = new PublicKeyAddress(value); } catch (Exception e) { //Create Alert var okAlertController = UIAlertController.Create("警告", "入力したパブリックキーが誤っています再入力してください", UIAlertControllerStyle.Alert); //Add Action okAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); // Present Alert PresentViewController(okAlertController, true, null); inputaddress = null; } return(inputaddress); }
/// <summary> /// show Asset of designated publickeyAddress /// </summary> /// <param name="publickey">開示するパブリックキー </param> /// <param name="tablename">情報を開示するテーブルネーム</param> /// <returns>result.Value</returns> public async Task <string> ShowNFTOwner(string tablename, string Querypublickey) { PublicKeyAddress Hospitalpublickey = null; var tokenid = ""; var client = this.SetClient(); var nftclient = new NFTClient(client); try { var value = PublicKey.Parse(Querypublickey); Hospitalpublickey = new PublicKeyAddress(value); } catch (Exception) { return(null); } var result = await nftclient.GetNFTTableAsync(tablename); foreach (KeyValuePair <String, Address> Indexelement in result.Value) { if (Indexelement.Value == Hospitalpublickey) { if (Indexelement.Key == "10000053") { tokenid = Indexelement.Key; } } } return(tokenid); }
/// <summary> /// show Asset of designated publickeyAddress /// </summary> /// <param name="client"></param> /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> public static async Task <decimal> ShowAsset() { var client = SetClient(); var assetClient = new AssetClient(client); //var myaddress = new PublicKeyAddress(Utils.GetUser0KeyPair());だめ var myaddress = new PublicKeyAddress(PublicKey.Parse("0338f9e2e7ad512fe039adaa509f7b555fb88719144945bd94f58887d8d54fed78")); var result = await assetClient.GetAssetAsync(TableName, myaddress); return(result.Value); }
/// <summary> /// show Asset of designated publickeyAddress /// </summary> /// <param name="client"></param> /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> public async Task <decimal> ShowAsset() { var client = this.SetClient(); var assetClient = new AssetClient(client); AssetTypesRegisterer.RegisterTypes(); var myaddress = new PublicKeyAddress(Utils.GetUser0KeyPair()); var result = await assetClient.GetAssetAsync(TableName, myaddress); return(result.Value); }
/// <summary> /// Inheritance Execution(遺産相続実行) /// </summary> /// <param name="RequesterAddress"></param> /// <param name="Familyname"></param> public void InheritanceExecution(Address RequesterAddress, string Familyname) { var InheritanceManagement = GetInheritanceManagementTableName(); if (!StateWriter.TryGetTableWriter <IBinaryTableWriter>(InheritanceManagement, out var inheritancemanageTable)) { return; } //相続要求者の鍵一致確認(NFTが盗まれたアカウント(鍵)からの要求の対策) var Inheritanceinfokey = Familyname + "_InheritanceAddress"; if (!TryGetInternalValue(ByteString.Encode(Inheritanceinfokey), out var inheritanceAddress)) { return; } var InheritanceAddress = PublicKeyAddress.Decode(inheritanceAddress); if (InheritanceAddress != RequesterAddress) { return; } var contractAddress = GetContractAddress(); //金融資産相続情報の取得から相続まで var Assetinfokey = Familyname + "_HeritageAsset"; if (inheritancemanageTable.TryGetValue(ByteString.Encode(Assetinfokey), out var deposit)) { var amount = Convert.ToDecimal(deposit.ToString()); var HeritageAssetTableName = GetHeritageAssetTableName(); if (!StateWriter.TryGetTableWriter <IAssetTableWriter>(HeritageAssetTableName, out var heritageassettable)) { return; } heritageassettable.MoveValue(contractAddress, RequesterAddress, amount); } //有形資産相続情報の取得から相続まで var Tangibleinfokey = Familyname + "_TangibleAsset"; if (inheritancemanageTable.TryGetValue(ByteString.Encode(Tangibleinfokey), out var tokenId)) { var tokeninfo = tokenId.ToString(); var TangibleAssetNFTTableName = GetTangibleAssetNFTTableName(); if (!StateWriter.TryGetTableWriter <INFTTableWriter>(TangibleAssetNFTTableName, out var tangiblenftTable)) { return; } tangiblenftTable.TransferToken(tokeninfo, RequesterAddress); } }
/*// PUT api/<miyabiController>/5 * [HttpPut("{id}")] * public void Put(int id, [FromBody] string value) * { * } * * // DELETE api/<miyabiController>/5 * [HttpDelete("{id}")] * public void Delete(int id) * { * }*/ /// <summary> /// privatekey parse publickeyaddress /// </summary> /// <param name="myprivatekey"></param> /// <returns></returns> private Address Inputjudgement1(KeyPair myprivatekey) { Address parsepublickey; try { parsepublickey = new PublicKeyAddress(myprivatekey); } catch (Exception) { return(null); } return(parsepublickey); }
/// <summary> /// Make NFT Table Method /// </summary> /// <param name="client"></param> /// <returns>tx.Id</returns> private static async Task <string> CreateNFTTable(IClient client) { //Get PublicKey from Utils's GetOwnerKeyPair() var tableownerAddress = new PublicKeyAddress(Utils.GetOwnerKeyPair().PublicKey); var assetTable = new CreateTable(new NFTTableDescriptor( TableName, false, false, new[] { tableownerAddress })); //var memo = new MemoEntry(new[] { "NFT_TEST" }); var tx = TransactionCreator.SimpleSignedTransaction( new ITransactionEntry[] { assetTable }, new[] { Utils.GetTableAdminKeyPair().PrivateKey }); await SendTransaction(tx); return(tx.Id.ToString()); }
/// <summary> /// publickey string parse publickey /// </summary> /// <param name="text"></param> /// <returns></returns> private Address Inputjudgement2(string text) { Address inputaddress = null; try { var value = PublicKey.Parse(text); inputaddress = new PublicKeyAddress(value); } catch (Exception) { return(null); } return(inputaddress); }
/// <summary> /// Send Asset Method /// </summary> /// <param name="client"></param> /// <returns>tx.Id</returns> public static async Task <string> Send(IClient client) { var from = new PublicKeyAddress(Utils.GetUser0KeyPair()); var to = new PublicKeyAddress(Utils.GetUser1KeyPair()); var amount = Inputjudgement(); var moveCoin = new AssetMove(TableName, amount, from, to); var tx = TransactionCreator.SimpleSignedTransaction( new ITransactionEntry[] { moveCoin }, new [] { Utils.GetUser0KeyPair().PrivateKey }); await SendTransaction(tx); return(tx.Id.ToString()); }
/// <summary> /// show NFT of designated publickeyAddress /// </summary> /// <param name="client"></param> private static async Task ShowNFT(IClient client) { // NFTClient has access to asset endpoints var nftClient = new NFTClient(client); var address = new PublicKeyAddress(Utils.GetUser1KeyPair()); var result = await nftClient.GetBalanceAsync(TableName, address); Console.WriteLine(result.Value); // var result2 = await nftClient.GetNFTTableAsync(TableName); //Console.WriteLine(result2.Value); //NFT reserch tokenID Console.WriteLine("Please Types NFT TokenID"); string Tokenid = Console.ReadLine(); var result3 = await nftClient.GetOwnerOfAsync(TableName, Tokenid); Console.WriteLine(result3.Value); }
/// <summary> /// Check if the entered information can be converted about publickey. /// </summary> /// <param name="text"></param> /// <returns>Inputaddress</returns> private Address Inputjudgement(string text) { Address inputaddress; try { var value = PublicKey.Parse(text); inputaddress = new PublicKeyAddress(value); } catch (Exception e) { Form5 frmform5 = new Form5(); frmform5.ShowDialog(); inputaddress = null; } return(inputaddress); }
/// <summary> /// Send Asset Method /// </summary> /// <param name="client"></param> /// <returns>tx.Id</returns> public static async Task <string> NFTSend(IClient client) { var _generalClient = new GeneralApi(client); Console.WriteLine("Please Types NFT TokenID"); string Tokenid = Console.ReadLine(); var to = new PublicKeyAddress(Utils.GetUser1KeyPair()); //enter the send amount var moveCoin = new NFTMove(TableName, Tokenid, to); var tx = TransactionCreator.SimpleSignedTransaction( new ITransactionEntry[] { moveCoin }, new [] { Utils.GetUser0KeyPair().PrivateKey });//Sender Privatekey await SendTransaction(tx); var result = await Utils.WaitTx(_generalClient, tx.Id); return(result); }
/// <summary> /// show Asset of designated publickeyAddress /// </summary> /// <param name="client"></param> /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> public async Task <decimal> ShowAsset(string publickey) { PublicKeyAddress myaddress = null; var client = this.SetClient(); var assetClient = new AssetClient(client); AssetTypesRegisterer.RegisterTypes(); try { var value = PublicKey.Parse(publickey); myaddress = new PublicKeyAddress(value); } catch (Exception) { return(0m); } var result = await assetClient.GetAssetAsync(TableName, myaddress); return(result.Value); }
/// <summary> /// vote method /// </summary> /// <param name="ParticipantAddress"></param> public void vote(Address ParticipantAddress) { var participantTableName = GetParticipantListTableName(); if (!StateWriter.TryGetTableWriter <IBinaryTableWriter>(participantTableName, out var participantTable)) //happen false { return; } if (!participantTable.TryGetValue(ParticipantAddress.Encoded, out var value)) { return; } participantTable.SetValue(ParticipantAddress.Encoded, ByteString.Parse("01")); //confirm number of participant votes var insuranceTableName = GetInsuranceTableName(); if (!StateWriter.TryGetTableWriter <IAssetTableWriter>(insuranceTableName, out var table)) { return; } // Can pay insurance amount? var contractAddress = GetContractAddress(); if (!TryGetInternalValue(ByteString.Encode("beneficiaryAddress"), out var address)) { return; } var beneficiaryAddress = PublicKeyAddress.Decode(address); decimal amount = 100m; table.MoveValue(contractAddress, beneficiaryAddress, amount); }