Blockchain code VR

Unity×VR×Blockchain(201)

スポンサーリンク

//tips

//unityでのブロックチェーンスクリプト確認

まずUnityで経済圏を持ったメタバースを作成していく際に必要になりそうなのでは、ネット上のサイトとの連動と情報の受け渡し部分であるといえる。

先のunityを用いた仮想通貨送金プログラムを見直し、ネット連動と情報の受け渡しの土台を調べていく。

下記のスクリプトから紐解いていく。

・TokenDeployAndSendCoroutinesUnityWebRequest
・EtherTransferCoroutinesUnityWebRequest
・GetLatestBlockVanillaNethereum
・GetLatestBlockCoroutine

まずは内容が先のブロックチェーンのpython構築のサイトと似ていたEtherTransferCoroutinesUnityWebRequest から確認していく。

UnityWebRequestとあるのでunityからEtherTransferへのwebリクエストであることがわかる。

UsingでNethereum関係の名前空間の取り込みを行なっており、ここでRPCを使っての連動を行う前準備を行なっていることがわかる。

using System.Collections;
using Nethereum.JsonRpc.UnityClient;
using Nethereum.RPC.Eth.DTOs;
using Nethereum.Util;
using UnityEngine;
using UnityEngine.UI;

public class EtherTransferCoroutinesUnityWebRequest : MonoBehaviour {

public string Url = "http://localhost:8545";

http://localhost:8545は下記のように説明されている。

http://localhost:8545 is the RPC port of your locally running Ethereum node software

Ethereumのネットワークと接続するエンドポイントを自身のPCに設定。

エンド ポイントはネットワーク上のコンピュータを特定するIPアドレスと、そのコンピュータ上のポートを特定するポート番号の組み合わせによって表される。

//秘密鍵
public string PrivateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7";

//公開鍵
public string AddressTo = "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe";

//数量
public decimal Amount = 1.1m;

//送金の際の手数料
public decimal GasPriceGwei = 2;

public string TransactionHash = "";
public decimal BalanceAddressTo = 0m;

public InputField InputUrl;
public InputField InputPrivateKey;
public InputField InputAddressTo;
public InputField InputAmount;

public InputField ResultBalanceAddressTo;
public InputField ResultTxnHash;

上記のような可変の記入項目を設けておく。

void Start () {

URLなど記入項目を各InputFieldのテキスト部分に代入し、表示。

InputUrl.text = Url;
InputPrivateKey.text = PrivateKey;
InputAddressTo.text = AddressTo;
InputAmount.text = Amount.ToString();

}

TransferボタンをクリックするとTransferEther()のコルーチンを実行。

public void TransferRequest()
{
StartCoroutine(TransferEther());
}

public IEnumerator TransferEther()
{
Url = InputUrl.text;
PrivateKey = InputPrivateKey.text;//秘密鍵
AddressTo = InputAddressTo.text;//相手先公開鍵
Amount = System.Decimal.Parse(InputAmount.text);//stringからdecimalへ型変換

EthTransferUnityRequestのオブジェクトを新たに作成し、引数に自身のポート番号と秘密鍵を入れている。

//initialising the transaction request sender
var ethTransfer = new EthTransferUnityRequest(Url, PrivateKey);

公開鍵のオブジェクトを別途作成。

var receivingAddress = AddressTo;

オブジェクトのTransferEtherメソッドを実行。引数に公開鍵と数量、送金手数料を入れている。

yield return ethTransfer.TransferEther(receivingAddress, Amount, GasPriceGwei);

例外が発生している場合はコルーチン処理を中断して離脱。

if (ethTransfer.Exception != null)
{
Debug.Log(ethTransfer.Exception.Message);
yield break;
}

問題なければresultメソッドを使用してオブジェクトのハッシュを作成。

TransactionHash = ethTransfer.Result;
ResultTxnHash.text = TransactionHash;
Debug.Log("Transfer transaction hash:" + TransactionHash);

この段階で送付先の公開鍵と結合させているのかもしれない。

ここでマイニング待ちのトランザクションオブジェクトを作成。

//create a poll to get the receipt when mined
var transactionReceiptPolling = new TransactionReceiptPollingRequest(Url);

マイニング待ちのトランザクションとして2秒ごとにハッシュを引数とする申請を送る。

参考ページ:https://docs.nethereum.com/en/latest/unity3d-sending-ether/

//checking every 2 seconds for the receipt
yield return transactionReceiptPolling.PollForReceipt(TransactionHash, 2);

Debug.Log("Transaction mined");

残高の確認を行うためEthGetBalanceUnityRequestオブジェクトを新たに作成。

var balanceRequest = new EthGetBalanceUnityRequest(Url);

下記で残高確認とブロックチェーン最新版取得を行う。

yield return balanceRequest.SendRequest(receivingAddress, BlockParameter.CreateLatest());

BalanceAddressTo = UnitConversion.Convert.FromWei(balanceRequest.Result.Value);

これは名前空間の中身を見て描かれているメソッドを読まないと実際の処理内容はわからなさそう。

ResultBalanceAddressTo.text = BalanceAddressTo.ToString();

Debug.Log("Balance of account:" + BalanceAddressTo);
}
}

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, VR
-, ,

Copyright© BUSINESS HACKER , 2021 All Rights Reserved Powered by AFFINGER5.