ユーザーCKBカスタムトークンを実装する方法について[CKB.DEVのティーパーティー]

この投稿は、主にお茶パーティーCKB.DEV最初の段階から、現在のテーマは次のとおりです。暗号王ボー:共有しているCKBでどのようにUDT、。

ティーパーティーライブビデオ:
https://v.qq.com/x/page/x30304t25l4.html

契約モデルとCKBの契約

CKB広場やイーサネットプログラミングモデルは完全に異なっているので、あなたがCKBのモデル契約で取引を開始する前にをご紹介することが必要です。

ファイル

第CKBトランザクションモデルはUTXO構造、すべてのトランザクションからなる細胞の破壊部分、細胞の新世代の一部であり、細胞は、CKBネットワークの最小構成単位です。

CKBトランザクションモデルとビットコイン同様の、しかしビットコインに破壊および生成ルールに基づいて延長されたが決定され、そしてコアプログレッシブ点CKBは、CKBのスクリプトがユーザカスタマイズ可能であるということです。

例えば、我々は今、CKBに使用されるアルゴリズムに署名していることSECP256K1であり、署名アルゴリズムビットコインは、使用されるスクエアエーテルは同じであるが、ビットコインイーサネットスクエアにこの署名アルゴリズムではないノードに書き込まれますしながら、変更、およびネイティブ署名アルゴリズムを使用すると、CKBに別の署名アルゴリズムSECP256R1を達成する必要がある場合は、あなただけSECP256R1について、独自のスクリプトを記述し、その後ロックスクリプトを記述する必要があり、CKB上に存在しないが、達成することができますこの機能を実装する必要が上のイーサネット・スクエアは、ハードフォークでなければなりません。署名アルゴリズムは、CKBでいつでも交換可能です。

もう一つの大きな改善は、クレジットの残高の転送は少し上の整合性がなければなりません前と後のビットクレジットのみネイティブBTCは、他のUDTを達成することはできませんので、この式は、ノードで硬化される、というCKBです。そして、これはユーザーがこれに基づいて、追加の転送ルールを開発することができることを意味しCKBを入力スクリプト、あるCKB、上でカスタマイズできることです。たとえば、ユーザーは、もはや指定されたオブジェクトCKBトークンネイティブにあっ制限することができるので、実際に新しいUDTで転送が、CKB、タイプスクリプトで達成することはできないの前後に一致していなければならないバランスタイプスクリプトのフィールドをカスタマイズすることができますが、それが作成された新しいUDTのいずれであってもよいです。

ファイル

加算CKBとイーサネットスクエアデザインパターンでは完全に異なっています。契約上のイーサネット広場が行動に集中する意向で、結果のない行動、逆CKBに、我々の焦点は行動の結果です。CKBスクリプトとのインターフェースと対話する対話型のイーサネットインターフェイス広場の用途上の契約は、国家の道の状態を使用しています。

ERC20レビューと分析

ここで、我々はERC20は、分析を通じて、我々は非常にERC20は多くの問題があるのであることを見つける何を見直します。

ファイル
契約やイベントを提供するERC20一般的な方法

  • ERC20は唯一の実装を統一していない、インターフェイスを定義します。新しいERC20を作成するたびに、一人のユーザーがそれぞれの契約を理解することは困難である一方で、新規契約を展開する必要があります。また、各新規契約開発者が再作成され、そのERC20契約の多くにリードまたは故意または過失登場セキュリティ上の懸念です。
  • ユーザーインターフェースの動作のERC20が結合されています。例えば、totalSupply、ミントの一つ、熱傷は、管理者の行動であり、balanceOf、承認、転送は、通常のユーザーの行動で、手当、transferFromは、許可されたユーザの行動です。私たちは、この契約が比較的混乱さERC20内の3つのユーザーの行動の少なくともいくつかを見ることができます。
  • ERC20ロジックとデータが結合されています。これはロジックとユーザアドレスデータ量を正確ためこの結合により、本契約の範囲内で実施するために契約の下有し、したがって統一イーサネット・スクエア上に実装することができません。

ファイル

CKB UDTのデザインのアイデアを実現します:

  • 逻辑与状态分离,使用统一的业务代码。安全将得到极大的保障。
  • 用户行为、管理员行为、授权行为分离。
  • 仅提供最核心的 UDT 功能。指提供最核心的 UDT 功能,保障开发者对 UDT 灵活性的需求。
  • 采用面向状态,注重行为结果的设计模式,去定义 UDT 的行为。

最小化的 UDT

最小化 UDT 最核心的两大功能:一个是发币,这里需要定义 UDT 的基本信息,并保持 UDT 唯一性;另一个是转账,保证 UDT 前后的一致性。

发币:Create Action

ファイル

Input Cells :填入 Cells,销毁这部分 CKB 的状态。可以是大家目前正在持有的 CKB,也可以是正在使用中的 CKB 等等。

Output Cells:这边包括两部分,一个是 UDT_ID_CELL 用来描述这个 UDT 的逻辑规则、基本信息和唯一性。另一个是 UDT_BALANCE_CELL 用来描述这个 UDT 的余额,保证转账前后的一致性。

UDT_ID_CELL 这边主要包含几个内容:

  • Type Script:用于存放 UDT 创建的逻辑规则,和 UUID 用于描述这个 UDT 的唯一性;
  • Lock Script:简单而言就是签名算法,解释谁可以解开这个 Cell;
  • Data:用于存放 UDT 的定义数据。创建者信息,创建 UDT 数量,小数点尾数等等。

UDT_BALANCE_CELL 这边主要包含几个内容:

  • Type Script:用于存放 UDT 转账的逻辑规则,和 UUID 用于描述这个 UDT 的唯一性;
  • Lock Script:简单而言就是签名算法,解释谁可以解开这个 Cell;
  • Data:用于表示 UDT 的余额。

转账:Transfer Action

ファイル

UDT 的转账会相对容易,销毁一部分 UDT,生成一部分新的 UDT 即可实现转账。

Input Cells :
放入一部分 UDT_BALANCE_CELL(s) 作为 Input。

Output Cells :
放入一部分 UDT_BALANCE_CELL(s) 作为 Output。

扩展 Minimal UDT

上面我们实现的是最小化 UDT,只设计了发币和转账这两个最基础的功能。那对于其他的复杂的功能要如何实现呢?

增发/销毁:Mint/Burn Action

ファイル

对于 UDT 的管理员,他可能需要对 UDT 进行一些增发和销毁的操作。这里就需要对于我们上面创建的 UDT_ID_CELL 进行一些修改。

Input Cells :

  • 输入 UDT_ID_CELL,当然只有之前 UDT_ID_CELL 中 Lock Script 规定的管理员才可以进行这样的操作,不是谁都可以进行这样的操作的。
  • (optional) UDT_BALANCE_CELL:如果是销毁,就在这里输入需要销毁的 UDT 的地址和 UDT 数量。

Output Cells:

  • 输出新的 UDT_ID_CELL,这是规则发生更改后,新生成的 UDT_ID_CELL;
  • (optional) UDT_BALANCE_CELL:如果是增发,就在这里输入增发的 UDT 需要发送到的地址和 UDT 数量。

授权:Approve/Transfer_from

ファイル

那么如何实现授权行为呢?一样的我们可以在最小 UDT 方案上进行扩展。

Action Approve

Input Cells :
输入UDT_BALANCE_CELL

Output Cells:
输出新的UDT_BALANCE_CELL_WITH_APPROVE,这是中间状态,表示这个 Cell 处于授权中的状态;

  • Lock:UDT_APPROVE_LOCK:这是一个 Script,其中写入了授权的逻辑规则
    • 授权方信息:授权方的公钥
    • 被授权方信息:被授权方的公钥
    • 授权金额

ここUDT_APPROVE_LOCKは、当事者がUDTの使用量が、前記セルのロックを解除するために自分の秘密鍵を使用することを許可することができる、2つのロジックを実装することがあり、他の権限の当事者が承認者を使用して、閾値量に認可することができますセルは、この秘密鍵のロックを解除し、それらのUDTの量を使用します。

アクションTransfer_from

認可当事者がで認可額の範囲内UDTを使用して、Transfer_fromを呼び出すことができます。

入力セル:
输入UDT_BALANCE_CELL_WITH_APPROVE

出力セル:
;出力新しいUDT_BALANCE_CELL_WITH_APPROVEは、完全に変更され、認可量、使用することはできません
出力UDT_BALANCE_CELL、許可されたパーティのUDT区間のうち転送されています。

注:許可されたパーティUDT_BALANCE_CELL_WITH_APPROVEの情報、のいずれかのロックスクリプトもタイプスクリプトことができます。そこでここでは、許可の当事者がアドレスであってもよい、アドレスがNであってもよいが、別の契約かもしれません。

ファイル

最後のシェアでは、暗号はまた、トークンスワップの例を紹介します。

Nervosコミュニティに参加

Nervosコミュニティが最高Nervosコミュニティであることにコミットしている、我々は、促進し、普及Nervos技術を、本質的な価値Nervosを掘る、無限の可能性のNervosを開く、人々のNervosネットワークを理解するために、すべての希望のために高品質を提供していきますプラットフォーム。

マイクロ・シグナルを追加します。BitcoinDogはNervosコミュニティに参加することを、あなたが開発者のグループに引き込まれることをプログラマ、してくださいノート、場合。

おすすめ

転載: www.cnblogs.com/nervoscommunity/p/12010106.html