Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
            }
        }
Пример #7
0
        /*// 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);
        }
Пример #8
0
        /// <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());
        }
Пример #9
0
        /// <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);
        }
Пример #10
0
        /// <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());
        }
Пример #11
0
        /// <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);
        }
Пример #12
0
        /// <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);
        }
Пример #13
0
        /// <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);
        }
Пример #14
0
        /// <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);
        }
Пример #15
0
        /// <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);
        }