["sig", {"pubkey": "Ald9tkgiUZQQ1djpZgv2ez7xf1ZvYAsTLhudhvn0931w"}]
["hash", {"hash": "value of sha256 hash in base64"}]
["and", [ ["sig", {pubkey: "one pubkey in base64"}], ["sig", {pubkey: "another pubkey in base64"}] ]]上記の定義のハッシュと同じアドレスから資金を使うには、2つの署名を提供する必要があります。
["or", [ ["sig", {pubkey: "laptop pubkey"}], ["sig", {pubkey: "smartphone pubkey"}], ["sig", {pubkey: "tablet pubkey"}] ]]上記の記述例は、ラップトップ、携帯電話、タブレットの3つのデバイスのいずれかから同じアドレスを制御する場合に便利です。
["and", [ ["or", [ ["sig", {pubkey: "laptop pubkey"}], ["sig", {pubkey: "tablet pubkey"}] ]], ["sig", {pubkey: "smartphone pubkey"}] ]]
["r of set", { required: 2, set: [ ["sig", {pubkey: "laptop pubkey"}], ["sig", {pubkey: "smartphone pubkey"}], ["sig", {pubkey: "tablet pubkey"}] ] }](「r」は「必須」を表す)、2つの必須署名のセキュリティと信頼性の両方を備えているため、鍵の1つが失われてもアドレスは引き続き使用可能であり、その定義を変更して 新しいキーで3番目のキーを紛失したり、別のアドレスに資金を移動したりすることができます。
["weighted and", { required: 50, set: [ {weight: 40, value: ["sig", {pubkey: "CEO pubkey"}] }, {weight: 20, value: ["sig", {pubkey: "COO pubkey"}] }, {weight: 20, value: ["sig", {pubkey: "CFO pubkey"}] }, {weight: 20, value: ["sig", {pubkey: "CTO pubkey"}] } ] }]
["not", ["in data feed", [["NOAA ADDRESS"], "wind_speed", ">", "200"]]]非常に古い親を選択することは合法であるため(新しいデータフィード投稿が表示されない)、通常、上記のような否定的な条件と、タイムスタンプが特定の日付の後の要件とを組み合わせます。
["and", [ ["address", "ADDRESS 1 IN BASE32"], ["address", "ADDRESS 2 IN BASE32"] ]]これは署名を別のアドレスに委任し、共有制御アドレス(契約の複数のユーザによって制御されるアドレス)を構築するのに便利です。 この構文により、ユーザーは、いつでも他のユーザーを気にすることなく、独自のコンポーネントアドレスの定義を自由に変更できます。
["definition template", [ "hash of unit where the template was defined", {param1: "value1", param2: "value2"} ]]パラメータは、テンプレート内で置き換えられる変数の値を指定します。 テンプレートは特別なメッセージタイプapp = "definition_template"で保存する必要があります(通常は使用前に安定している必要があります)。テンプレート自体はメッセージペイロードにあり、テンプレートは通常の定義のように見えますが、 構文@param1、@ param2。 定義テンプレートはコードの再利用を可能にします。 彼らはまた、他のテンプレートを参照することがあります。
["in data feed", [ ["ADDRESS1", "ADDRESS2", …], "data feed name", "=", "expected value" ]]
["or", [ ["and", [ ["address", "ADDRESS 1"], ["in data feed", [["EXCHANGE ADDRESS"], "EURUSD", ">", "1.2500"]] ]], ["and", [ ["address", "ADDRESS 2"], ["in data feed", [["TIMESTAMPER ADDRESS"], "datetime", ">", "2018-10-01 00:00:00"]] ]] ]]それは2つのオーラックに頼っています.1つはEUR / USD為替レートを掲示しており、もう1つは現在の時間を掲示しています。 当初、両当事者は、それぞれのステークを住所に送付することによって、この定義で定義された住所に資金を提供します。 その後、交換所で発行されたEUR / USDの為替レートが1.2500を超えると、ファーストパーティーが資金を払うことができます。 これが2018年10月1日より前に起こらず、タイムスタンプオラクルが後日投稿した場合、第2当事者はこの住所に保管されているすべての資金を掃引することができます。
["or", [ ["and", [ ["address", "MERCHANT ADDRESS"], ["in data feed", [["FEDEX ADDRESS"], "tracking", "=", "123456"]] ]], ["and", [ ["address", "BUYER ADDRESS"], ["in data feed", [["TIMESTAMPER ADDRESS"], "datetime", ">", "2016-10-01 00:00:00"]] ]] ]]定義は、正常に配送されたすべての出荷の追跡番号を記載したFedExのオラクルによって異なります。 出荷が配送される場合、商人は最初の条件を使用してお金をロック解除することができます。 指定された日付より前に配送されない場合、顧客はお金を取り戻すことができます。 この例は、FedExが各貨物を発送する必要があるため、多少狂っています。 同じ結果を達成するためのより現実的な方法については、以下の「in merkle」節を参照してください。
["in merkle", [ ["ADDRESS1", "ADDRESS2", ...], "data feed name", "expected value" ]]
["seen address", "ANOTHER ADDRESS IN BASE32"]この句は、指定されたアドレスが、最後の安定したユニットに含まれる少なくとも1つの過去のユニットの著者として見なされた場合、 "true"と評価されます。
["seen", { what: "output", address: "ADDRESS", asset: "asset or base", amount: 12345 }]この句は、指定された条件を満たす過去(最後の安定した単位の前)に入力または出力があった場合に "true"と評価されます。 検索条件の構文は、以下のhas節と同じです。
["seen definition change", ["ADDRESS", "NEW DEFINITION CHASH"] ]指定されたアドレスの定義変更があり、新しい定義のc-hash(チェックサム付きハッシュ)が指定された値と等しい場合、この句は "true"と評価されます。
["cosigned by", "ANOTHER ADDRESS IN BASE32"]
["or", [ ["address", "USER ADDRESS"], ["and", [ ["address", "EXCHANGE ADDRESS"], ["has", { what: "output", asset: "ID of alternative asset", amount_at_least: 1200, address: "USER ADDRESS" }] ]] ]]第1の代替方法は、ユーザが好きなときにいつでもバイトを取り戻すことができるため、注文を取り消すことができます。 第2の選択肢は、同じ取引の別のアウトプットが他の資産の少なくとも1,200単位をユーザの住所に支払うという条件で、取引所に資金を使う権利を委任する。 取引所は注文を公表し、売り手はそれを見つけ、資産を交換する取引を構成し、取引所と一緒にそれに署名する。 交換機は、ユーザの資金を恣意的に管理することはできず、同時に代替資産をユーザに支払う場合に限り、ユーザが資金を完全に支配し、好きなときに契約から引き出すことができる。
["has equal", { equal_fields: ["address", "amount"], search_criteria: [ {what: "output", asset: "asset1", address: "ADDRESS IN BASE32"}, {what: "input", asset: "asset2", type: "issue", own_funds: true, address: "ANOTHER ADDRESS IN BASE32"} ] }]検索条件を満たす入力または出力のペアが少なくとも1つあり、 "equal_fields"で指定されたフィールドが等しい場合は、 "true"と評価されます。 ペアの最初の要素は最初のフィルタセットで検索され、2番目のフィルタは2番目の要素で検索され、検索条件の構文は "has"句と同じです。
["sum", { filter: { what: "input"|"output", asset: "asset or base", type: "transfer"|"issue", own_funds: true, address: "ADDRESS IN BASE32" }, at_least: 120, at_most: 130, equals: 123 }]フィルタの構文は、has句と同じです。
["has definition change", ["ADDRESS", "NEW DEFINITION CHASH"] ]ユニットが指定されたアドレスの定義変更を持ち、新しい定義のc-hash(チェックサム付きハッシュ)が指定された値と等しい場合、この句は "true"と評価されます。