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

*このページhttps://wiki.byteball.org/timestampの翻訳です。
機械翻訳よりは若干マシな程度の精度ですが、ご活用ください。
なお、執筆者が理解出来たと感じた部分は機械翻訳から大幅に変わっている場合がありますのでご了承ください。

Timestamp(タイムスタンプオラクルを実現するための、異なるスマートコントラクトの使い方)

オラクル

オラクルのアドレスは「I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT」です。タイムスタンプは1970/1/1からのミリ秒となっています。

Notes

タイアップファンド

「offer a contract」オプションは、契約書作成者の支払い額を、指定された将来の時間まで回復させる可能性なしに結び付けます。
「bound-payment」オプションは、上記のようなコミットメント、または、受取人がそれらを回収する前にいつでも契約を無効にし、資金を回収することを許可します。

Times

契約書作成者が独自に設定できる3つの時間があります。
1:仲間がコントラクト(契約)に同意して資金を提供しない場合、契約作成者は資金を取り戻すことができます(「offer a contract」オプションのみ)
2:契約作成者/仲間がコントラクト(契約)を解除できるまでの時間
3:仲間/契約作成者がコントラクト(契約)を解除できるまでの時間

誰に支払うのか(「offer a contract」オプションのみ)

仲間が "私"か "コントラクト(契約)"のどちらに支払うかを選ぶ際には注意が必要です。
  • 勝者がすべてを取る賭けでは、通常、 "コントラクト(契約)に
  • 受信者がトークン金額に提供しなければならない単純な将来の支払いの場合は、どちらに支払うかは問題ではありません
  • しかし、コントラクト(契約)が履行された際に両当事者から多額の資金が必要とされる場合、コントラクト(契約)の非執行時に各当事者が資金を返済できるようにする必要があります。

コントラクト(契約)が有効であるためには、仲間がトークンを支払わなければならないことに注意してください。

スマートコントラクト


「offer a contract」と「bound-payment」オプションのどちらも新しいスマートコントラクトを作成します。
契約作成者はすぐにこのコントラクト(契約)を見ることができますが、受取人はオラクルが指定時刻に投稿した後にしか見ることができません。 受取人はコントラクト(契約)を解除することができます。 契約作成者は「take-back time」と呼ばれる時間後に契約を解除することができます。 両方の当事者がその2回の後にコントラクト(契約)を解除することは可能であることに注意してください。

このようなタイムスタンプのオラクルを使用するには、ペアウォレットチャットで行う必要があります。 それは、送金支払い画面にペーストされたランダムなアドレスを使用して行うことはできません。

変換

Unix時間(1498989599806など)と人間が判読可能な日付(GMT:2017年7月2日日曜日9:59:59.806 AM)を相互に変換するには、https://www.epochconverter.com/のようなWebサイトを使用します。

ミリ秒

タイムスタンプはミリ秒単位で、13桁です。 したがって、必要に応じて "000"を追加することを忘れないでください。 たとえば、2017年7月2日からGMTの午前10:00までの6か月間は、2018年1月2日、GMTの午前10時です。 Aコンバータは1514887200を与えるので、Oracleを使用するにはこれを1514887200000に変更します。

A.「offer a contract」を使用した簡単な将来の支払い

この例では友人の誕生日プレゼントに、2017年11月5日から4ヶ月で1.77GBB収集できたとします。
(PQR...)から始まるアドレスを左クリックして「offer a contract」を選択

1.コントラクトへの支払い

私の支払い: 1.7 GBB (十分な資金を持つ資産、つまりGBかGBBのいずれかを使用できます)(翻訳者補足:原文では"資産"とだけ書かれていますが、GBやGBBを示す資産の種類の事だと思われます。)
仲間の支払い額: .01 MB (仲間は何かしらを支払う必要があります; この場合ではトークンの額です)
仲間の支払い先: このコントラクト (とにかく仲間が支払いを取り戻す)
仲間が支払っていない場合、私は4時間後に自分のお金を取り戻すことができます(通常、仲間が時間内に支払う限りここは重要ではありません)

2.コントラクトを解除できるのは誰か?

  • イベントがオラクルによってポストされた場合は「仲間」
オラクルのアドレス:I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT
データフィード名:timestamp(この名前を正確にコピーして貼り付ける)
値:>1509840000000 (13桁表示必須。時間表記で2017年11月5日00:00:00.000、 今日(2017年7月2日)から数えて約125日)
  • コントラクト(契約)が終了した155日以後は「私」(この特定の時間は、契約作成者が資金を取り戻すことができる前に仲間は30日契約のロックを解除することができます)

B:シンプルな未来納付の支払い

今度の例は友人への誕生日プレゼントで、2017年11月5日から4ヶ月で集めることのできたツビブ(zwibs)[要調査]とします。
(PQR...)から始まるアドレスを左クリックして「Pay to this address」を選択

メイン/サブウォレットの選択

利用可能残高:7つのZW1B...(アセットを選んで送信)
送信先:PQR...(アドレスはユーザーが変更することは出来ない)
「Bind the payment to a condition」のリンクをクリック
支払い額:3つのZW1b

仲間がこの支払いを受け取ったら

  • オラクルによってイベントが投稿される(ドロップダウンメニューから選択)
オラクルのアドレス:I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT
データフィード名:timestamp (この名前を正確にコピーして貼り付ける)
値:>1509840000000(13桁表示必須。 ">"( "より大きい"という意味)を忘れないでください。時間表記で2017年11月5日00:00:00.000、 今日(2017年7月2日)から数えて約125日)
  • 値の投稿者:"私"か"仲間"のいずれか一方
条件が満たされていない場合、私がお金を取ることができるようになる時間:3720時間(155日を時間に変換したもの。この特定の時間は、契約作成者が資金を回収することができる前に、仲間が30日コントラクト(契約)のロックを解除することができます)

クリックして送信。

AとBの違い

AとBのどちらも受信者に受信アドレスを提供する必要があります。
しかし、Aの場合、受取人はトークン金額を支払うことによって決まった契約の手順を進めなければならない。 一方、Bの場合、仲間の明示的な許可は必要ありません。
「条件が満たされない場合は(if the condition is not met)」フィールドに設定する期限を短くすることで、
Bの場合は契約者をコントラクト(契約)から退けさせて、予定された支払日前のいつでも資金を回収することができます。
これは望ましいかもしれません
(訳者補足:期限を短くすると、コントラクト(契約)の成立の見込みが薄い場合でも早めに資金回収ができるので有効かもしれない。という趣旨だと思われます。)

「offer a contract」を使って恩人へのリクエスト

この例は、
裕福な祖母に、結婚式の為に2GBの資金提供を依頼します。期間は2017年7月2日を今日として11月5日まで約4ヶ月間。
その際、一度資金を払ってから支払いにコミットしますが、 私は資金に事前にアクセスしていません。

(PQR...)から始まるアドレスを左クリックして「offer a contract」を選択

1:コントラクトへの支払い

私の支払い:.01 MB (私は何かを支払わなければならない。 ここではトークン額です)
仲間の支払い額: 2 GB (仲間は正確に金額を支払う必要があります。 彼女が受け取るコントラクト(契約)ではユーザーが変更することはできません)
仲間の支払い先:このコントラクト(その間に何かが起こった場合に備えて)
仲間が支払っていない場合に私が自分のお金を取り戻すことが出来るまでの時間:4時間(仲間が支払ってくれる限りここは重要ではなく、デフォルト値を残しているだけです。)

2:誰がコントラクトを解除するのか

オラクルによってイベントが投稿された場合は私:
オラクルのアドレス: I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT
データフィード名: timestamp (この名前を正確にコピーして貼り付ける)
投稿された値: >1509840000000 (13桁表示必須。時間表記で2017年11月5日00:00:00.000、 今日(2017年7月2日)から数えて約125日)
コントラクト(契約)が期限切れになってしまった場合は仲間:
150日(この特定の時間は、ベネファクターが資金を回収できるようになるまで私はコントラクト(契約)のロックを解除するために私に25日間を許します)

「offer a contract」を使ってオプションを行使する

通常、ある未来のある価格で何かを売買するオプションを購入します。
1つはオプションを払いますが、どちらの当事者も今後の取引のために資金をコミットしません。
しかし、このスマートコントラクトでは、契約書作成者からの資金は、相手がオプションを実行するまで、
またはコントラクト(契約)が期限切れになるまでコントラクト(契約)に縛られますが、契約作者はいつでもコントラクト(契約)を破棄(および違反)することができます。

次のコントラクト(契約)では、私に1MBの契約前支払いを引き渡す代わりに、ピアツーピアに10MBの15個のzwibを購入するオプションを、
24時間後から開始し、29日間のみ有効にします。
どの財布資産も使用されており、資産のボラティリティは重要なものである可能性があります。

このコントラクト(契約)で使用される数字の詳細

  • 「現在」の日時は2017年7月2日13時40分(UTC)とします
  • 「現在」から30日後とは、2017年8月1日23時59分59秒999(UTC)のことを指します。
  • 2017年8月1日23時59分59秒999(UTC)は「現在」から30日と10時間と20分後= 30+620/1440日=30.43日=730.3時間(「take-back-if-no-peer-payment」の数字は、最短で1時間、または6分にしか設定できません)
  • 2017年7月2日 13時40分(UTC)のUNIX時間表記は1499089200000
  • 2017年8月1日23時59分59秒999(UTC)は「現在」から30日と10時間と20分後= 30+620/1440日=30.43日(契約期限は、最短で.01日、つまり約15分に設定することができます)

(PQR...)から始まるアドレスを左クリックして「offer a contract」を選択

コントラクトへの支払い

私の支払い:15 zwibs
仲間の支払い額:10MB
仲間の支払い先:私
仲間が支払わず、私が自分のお金を取り戻せるまでの時間:730.3時間

誰がコントラクト(契約)を解除するのか

オラクルによってイベントが投稿された場合「仲間」
30.43日後にコントラクト(契約)が解消された場合は「私」

納付金を使った死者の契約

これは、引き出しで終了しない限り実行される単純なコントラクト(契約)です。
トランザクションを停止できない場合(おそらく1つが死んでいるため)、デフォルトで資産を転送するという考え方です。

今回のケースは、3ヶ月後にいつでも受取人が50GBのロックを解除できるようにしたいと考えています。
ここで決められた「3ヶ月」は
・「1週間」の場合だと、毎週このコントラクト(契約)を再発行することを覚えておく必要がある
・「6ヶ月以上」の場合だと、来週に死亡した場合、受取人は資金にアクセスするのに6ヶ月以上待たなければならない。
と比べた場合のトレードオフの結果です。
(翻訳者補足:あくまで例なので、実際に使用する場合は状況に応じて1週間にしたり6ヶ月以上にしてください。例と同じようなケースでも再発行する人が面倒と感じなければ1週間ごとにコントラクト(契約)を再発行したところで問題はありませんし、待つことに苦痛がなく不利益もないなら6ヶ月以上でも大丈夫です。)

このコントラクト(契約)で使用される数字の詳細

  • 「現在」の日時は2017年7月2日17時00分(UTC)とします
  • 「現在」から「3ヶ月後」は、2017年10月01日00時00分(UTC)を指します。
  • 2017年10月01日00時00分(UTC)のUNIX時間は1506816000000

先ほどのウォレットチャットで仲間によって送信されたアドレス(PQR ...)を左クリックして「Pay to this address」を選択。

メイン/サブウォレットの選択

利用可能額:XXXGB(アセットへ送る額の選択)
送金先:PQR...(アドレスはユーザーが変更することは出来ない)
額:50GB

仲間が支払いを受け取った場合

オラクルがイベントを投稿した時(ドロップメニューから選択した時)
オラクルのアドレス: I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT
データフィード名:timestamp (この名前を正確にコピーして貼り付ける)
値:>1506816000000(13桁表示必須。 ">"( "より大きい"という意味)を忘れないでください。時間表記で2017年10月1日00:00:00.000(UTC)、 今日(2017年7月2日)から数えて約90日)

値が掲示される:"私"か"仲間"のいずれか一方
条件が満たされない場合に私がこのお金を戻せるようになるまでの時間:1時間(支払いが確認されてから6分後にはいつでもコントラクト(契約)を取り消し/再発行することができます)

送信をクリック。
タグ

コメントをかく


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

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

当サイトは寄付歓迎です

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

メニュー

メニュー



開発者ガイド

キャッシュバックプログラム

ウォレットを使用したユーザー認証(翻訳)
(調査中)JSON-RPC経由でByteballにアクセスする
コード解説(headless-byteballのstart.js)(作成中)

実用テクニック

【メニュー編集】

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