Byteballを使ったアプリやシステムを開発するための情報wikiです。現時点では管理人個人のメモとなっています。編集したい方はSlack経由でYamaokaまでご連絡下さい。

チャットボットでスマートコントラクトを作成してユーザーに送るサンプルです。
コードは以下から取得してください。
https://github.com/yamaokaBTC/Byteball_smartcontra...

上記のサイトにも書いてありますが、
コントラクトの中身自体はいい加減なため、メインネットで入金はしないようにお願いします。



解説

207行目あたりからが今回のメイン部分になります。

入力されたアドレスが正しいウォレットアドレスかどうかを判定しています。
https://github.com/byteball/byteball-faucet
アドレスの仕様がわからなかったので↑のコードを使っています。
if (text.match(/unrecognized/i))
  return console.log("ignoring: "+text);
  var arrMatches = text.match(/\b[A-Z2-7]{32}\b/);
  if (!arrMatches)
  device.sendMessageToDevice(from_address, 'text', "Unrecognized");
				
  var address = arrMatches[0];
  if (!ValidationUtils.isValidAddress(address)){
    device.sendMessageToDevice(from_address, 'text', "Please send a valid address.有効なアドレスを入力してください");
  }
  else{

addressがスマートコントラクトから金額を取り出せるユーザー、
その下のin data feedが取り出し可能になる条件で、主にオラクルの値を使うことになります。
in data feed以外の値が指定できるのかなどについては不明です。
['address',address],//useraddress
['in data feed', [['I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT'], 'timestamp', '>',  Date.now()]]

まだ理解できていない部分ですが、上で記載したウォレットアドレスに対するデバイスアドレスを定義している?
わかり次第ここに書きます。
'r.0.0': {
	address:address,//user_address
	member_signing_path: 'r', // unused, should be always 'r'
	device_address: from_address //user device address
},

コントラクト用に作成されたアドレスを使って
スマートコントラクトの作成、エンコード、ユーザーへの送付を行っています。
実際の開発でも1000の金額部分以外は特に変える必要はないと思います。
var arrPayments = [{address: shared_address, amount: 1000, asset: 'base'}];
var assocDefinitions = {};
assocDefinitions[shared_address] = {
	definition: arrDefinition,
	signers: assocSignersByPath
};
var objPaymentRequest = {payments: arrPayments, definitions: assocDefinitions};
var paymentJson = JSON.stringify(objPaymentRequest);
var paymentJsonBase64 = Buffer(paymentJson).toString('base64');
var paymentRequestCode = 'payment:'+paymentJsonBase64;
var paymentRequestText = '[your share of payment to the contract]('+paymentRequestCode+')';
device.sendMessageToDevice(from_address, 'text', paymentRequestText);
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

当サイトは寄付歓迎です

Byteball
[1MB] [10MB] [100MB]

メニュー

メニュー



実用テクニック

【メニュー編集】

メンバーのみ編集できます