connecting...
Google translation for articles :
14 NEMBER donated to you!!

XEMBook-sdk進捗

nem135xem (14) 212 4 2

カタパルト界隈も賑わってきましたので、NEM1のことは下げ潜行でお伝えしていきます。

 

現在のXEMBook-sdkですが、以下の2つの実装が終わりました。

といっても、開発はほぼ終了しており、使いこなすためのサンプルプグラムを開発しています。

 

  • マルチシグ生成
  • 連続アクセス

 

マルチシグの生成は今までのNEMWalletでは非常に面倒くさいものがありました。

まずアカウントを作成してそこに入金したのち、3つのアカウントを生成してそれらを指定するという画面を行ったり来たるする煩雑さと、間違ったアカウントをマルチシグしようものならいきなりセルフGOXの危険性も生まれてしまいます。

 

それらのことを勘案すると、マルチシグはまず空っぽのアカウントで枠組みだけを作成した後、必要なアカウントに交換するというのがベストプラクティスのような気がします。

と言うわけでサンプルプログラムを公開しております。

 

http://xembook.net/xembook-sdk/snapshot/20190329/examples/03_multisig.html

 

 

画面を表示すると、QRコードが表示されますのでNEMWalletなどを利用して1XEMを入金してください。

その入金先が資産アカウントになります。資産アカウントに入金が確認されると、自動的に所有者アカウントが3つ生成されマルチシグを組成します。出来上がったら NEMのエクスプローラーなどでマルチシグの状態を確認してみてください。

 

マルチシグは最も洗練されたスマートコントラクトの一つと言われながらもまだその利用が活発ではありません。このツールでぜひマルチシグの可能性を感じていただき、いろいろなアイデアを議論できればと思います。

 

ソースコード以下のような記述になっています。

getNemInfo("/time-sync/network-time").then(
	function(res){

		var s1 = nacl.randomBytes(32);
		var s2 = nacl.randomBytes(32);
		var s3 = nacl.randomBytes(32);
		var k1 = KeyPair.create(s1);
		var k2 = KeyPair.create(s2);
		var k3 = KeyPair.create(s3);

		let due = 60;
		let timeStamp = Math.floor(res.sendTimeStamp/1000);

		let entity = {
			'type': multisigModification,
			'version': getVersion(104,2),
			'signer': k.publicKey.toString(),
			'timeStamp': timeStamp,
			'deadline' : timeStamp + (due * 60),
			'fee': 500000,
			"modifications": [
				{"modificationType": 1,"cosignatoryAccount": k1.publicKey.toString(),"cosignatoryAddress": toAddress(k1.publicKey.toString(), "104")},
				{"modificationType": 1,"cosignatoryAccount": k2.publicKey.toString(),"cosignatoryAddress": toAddress(k2.publicKey.toString(), "104")},
				{"modificationType": 1,"cosignatoryAccount": k3.publicKey.toString(),"cosignatoryAddress": toAddress(k3.publicKey.toString(), "104")}
			],
			"minCosignatories" : {"relativeChange": 2}
		};

		let tx = serializeTransaction(entity);
		let kp = KeyPair.create(s);

		console.log(entity);
		postNemSignedInfo("/transaction/announce",tx,kp.sign(tx)).then(
			function(){
				console.log("done!");
			}
		);
	}
);

 

ほとんど前回の送金と同じロジックですね。3つの秘密鍵を生成し、トランザクションの元となるjsonファイルの構成が変わっただけです。そうです、NEMではこんな感じですべてのトランザクションが記述できます。言語に依存した要素は全くなく、署名されたjsonのデータ構造でブロックチェーン内の構成変更を指示できます。

 

 

そして、今回のもう一つの進捗は連続アクセスです。

NEMではAPIアクセスの集中を防ぐために一度に25件までしかトランザクション履歴を検索できません。これでは、過去に特定アカウントへのアクセスを調べる時など非常に不便です。XEMBook-sdkでは複数ノードあるいは、レスポンスの良いノードに対して集中的に繰り返しアクセスする機能をサポートしています。

 

	var getNemTransferInfo = function(){

		var query = "/account/transfers/all?address=NBZNQL2JDWTGUAW237PXV4SSXSPORY43GUSWGSB7";
		if(isHashAccess){
			if(lastHash != ""){query += "&hash=" + lastHash;}
		}else{
			if(lastId   != ""){query += "&id=" + lastId;}
		}

		return getNemInfo(query)
		.then(function(res){
			var dataArray = res.data;
			lastId = res.data[res.data.length - 1].meta.id;
			lastHash = res.data[res.data.length - 1].meta.hash.data;
			dataArray.some(function(val){

				$( "#transactions tbody" ).append( "<tr>" +
					"<td>"+  val.transaction.timeStamp  +"</td>" +
					"<td>" + val.transaction.recipient + "</td>" +
					"<td>"+ val.transaction.amount + "</td>" +
				"</tr>" );
			});
		});
	}
	multiConnect(getNemTransferInfo,2);

 

マルチコネクト(multiConnect)という機能になります。上記プログラムで説明すると

multiConnect(getNemTransferInfo,2);

となり2回ノードにアクセスしてgetNemTransferInfoを実行、という意味になります。

並列にノードにアクセスするのではなく順次アクセスをするため、最初のノードアクセスの返事を待ってから最終行のidを取り出し、2回目のアクセスはそのidより以前の情報を取ってこいという命令を書くことができます。

 

それらの命令が上記のサンプルで実行できてしまいます。これはかなり便利な機能だとおもいます。

動くものを置いておきますので、プログラムに興味ある人はご参考ください。

http://xembook.net/xembook-sdk/snapshot/20190329/examples/05_sequence.html

 

 

 

 

Why don't you get crypt currency 'nem' by posting your blog article?

nemlog is blog posting service which has donation feature by crypt currency nem.
nemlog was launched to create environment which can be donated nem among NEMbers via blog articles.
Let's get nem by posting good blogs.

Nem prize event is being held frequently, Please join us on this opportunity!

nemlog registration from here
Register
Comments from NEMber
保険Gネン
2019-04-12 08:59:48ID:101256

XEMbookさん、ありがとうございます! 勉強します。マルチシグの可能性、まさに中核的な機能なのてすね。私も例えば公証機能に関心が。いまだに業界では役所に確定日付を取りに行ったり、医療機関では同意書とか戸籍謄本の「原本・原本!」ゆうありさまですから…

おえ #NemKit 作った人
2019-04-01 10:47:22ID:94463

連続読み込みいいですねー
僕のツールでも入出金履歴の取得の遅さが課題になってます・・・

レスポンスが良いノードはどうやって探しているんですか?

XEMBook
2019-03-31 23:46:26ID:94298

>>目指せ北海道::さん
依存ライブラリは jQueryとcrypto-jsになります。時間のあるときに動くかどうか調べてみますね。
あとはTypeScriptに抵抗がなければNEM財団公式のライブラリも検討候補かと思います。

目指せ北海道
2019-03-31 23:00:46ID:94265

自動取引ボットを組み込んだラズパイに、どうやってウォレット機能を安全に組み込めるかを考えています。XEMBookさんのsdkが使えそうな気がするので、ラズパイでのjavascriptの実行について調べてみます。Node.jsとかでできるのかな?

NEMber who posted this article

XEMBook公式アカウントです。http://xembook.net NEM/mijin ONLY ときどきポエム。 [namespace:@xembook]
19301
0

Why don't you read following articles?

3.45 XEM
196 9 1

1.75 XEM
158 12 0


6.7 XEM
191 12 0

16.7138 XEM
775 12 3



7.355 XEM
414 2 0