"dependencies": { "headless-byteball": "git+https://github.com/byteball/headless-byteball.git", "byteballcore": "^0.2.33", ..... }
require('byteballcore/wallet.js’);
exports.deviceName = 'My test bot'; exports.permanent_pairing_secret = '0000';
====== my pairing code: A2WMb6JEIrMhxVk+I0gIIW1vmM3ToKoLkNF8TqUV5UvX@byteball.org/bb#0000
<a href="byteball:A2WMb6JEIrMhxVk+I0gIIW1vmM3ToKoLkNF8TqUV5UvX@byteball.org/bb#0000">Chat with my test bot</a>
var db = require('byteballcore/db.js’);
var eventBus = require('byteballcore/event_bus.js'); eventBus.on('text', function(from_address, text){ // 貴方のコードをここにいれてください。 });
var device = require('byteballcore/device.js'); device.sendMessageToDevice(user_device_address, 'text', ‘ここにボットからユーザーへのメッセージを入れます');
eventBus.on('paired', function(from_address){ var device = require('byteballcore/device.js'); device.sendMessageToDevice(from_address, 'text', getMyWelcomeText()); });*訳者補足:getMyWelcomeText()を使わずに直接テキストを書いても問題ないと思われます。
click this link: [Command name](command:command code)
Any text before[payment description, will be ignored](byteball:YOURBYTEBALLADDRESS?amount=123000&asset=base) any text after
var walletDefinedByKeys = require('byteballcore/wallet_defined_by_keys.js'); walletDefinedByKeys.issueNextAddress(wallet, 0, function(objAddress){ var byteball_address = objAddress.address; // work with this address, then send it over to the user device.sendMessageToDevice(user_device_address, 'text', "Please pay to "+byteball_address); });
var headlessWallet = require('headless-byteball');
eventBus.on('new_my_transactions', function(arrUnits){ // react to receipt of payment(s) });
new_my_transactionsのイベントも外に発信されるトランザクションに誘発されるので、新しい取引で支払いが予定されているアドレスの1つをクレジットするかどうかを確認する必要があります。
eventBus.on('my_transactions_became_stable', function(arrUnits){ // react to payment(s) becoming stable });
eventBus.on('mci_became_stable', function(mci){ // check if there are any units you are interested in // that had this MCI and react to their becoming stable });
var headlessWallet = require('headless-byteball');その上で下記の関数を使って下さい:
headlessWallet.issueChangeAddressAndSendPayment(asset, amount, user_byteball_address, user_device_address, function(err, unit){ if (err){ // something went wrong, maybe put this payment on a retry queue return; } // handle successful payment });
var arrDefinition = ['or', [ ['and', [ ['address', USERADDRESS], conditions when user can unlock the contract ]], ['and', [ ['address', MYADDRESS], conditions when I can unlock the contract ]] ]];
var device = require('byteballcore/device.js'); var assocSignersByPath = { 'r.0.0': { address: user_address, member_signing_path: 'r', // unused, should be always 'r' device_address: user_device_address }, 'r.1.0': { address: my_address, member_signing_path: 'r', // unused, should be always 'r' device_address: device.getMyDeviceAddress() } };このオブジェクトのキーには、配列の先頭の’r.0.0:’部分の2番目と3番目はorおよびand条件を示す項目になっています。条件はネストすることができるので、多くのインデックスが存在する可能性があります。これらはドットで区切られています。
var walletDefinedByAddresses = require('byteballcore/wallet_defined_by_addresses.js'); walletDefinedByAddresses.createNewSharedAddress(arrDefinition, assocSignersByPath, { ifError: function(err){ // handle error }, ifOk: function(shared_address){ // new shared address created } });アドレスが正常に作成された場合、アドレスはすでに自動的にユーザーに送信されているため、ユーザーのウォレットはそれを認識します。
var arrPayments = [{address: shared_address, amount: peer_amount, asset: peerAsset}]; 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(correspondent.device_address, 'text', paymentRequestText);