# RGB Protocol RGBは、BitcoinとLightningネットワーク用の [* スケーラブル]で [* 機密性]の高いスマートコントラクトシステムです。私的・相互所有、抽象化、関心事の分離の概念を取り入れ、「ポストブロックチェーン」、「トークン」の導入を必要としない信頼性の高い分散コンピューティングのチューリング完全形式。 トークンプロトコルではない。ただトークンを発行するためのものじゃない。 今までとは違うアプローチを取っている - Bitcoin-based (Colored coins, Counterparty, OMNI) - Non-bitcoin (Ethereum, EOS and others) 基本的コンセプトは issuer:スマコン発行者 = Deployer? state owners:状態管理者 state evolution:? が分離されている。 大事なところだけBitcoinにCommitementする考え方。スマコンの状態や枝葉のやりとりはオフチェーン。 - `Zero-Knowledge` も対応。 `Minblewhimble` https://cryptopotato.com/litecoin-activates-mimblewimble-extension-blocks-mweb/ `Liquid` https://coinpost.jp/?post_type=column&p=153157 ### コアのコンセプトで気になったやつ - PRISM (partially-replicated infinite state machines) computing - Declarative functional programming <= 関数型? - Cellular automation <= セル・オートマトン - Bulletproofs <= ??? UTXOモデル のチェーンならなんでも乗れる。 `Client-Side Validation` と呼ばれる仕組みを利用してスマートコントラクトを管理する。 - GlobalStateは存在しない。 `Single Use Seals` によって整合性を担保している。オンチェーンにデータを含めない。結束バンド - `Single-use-seal is an abstract mechanism to prevent double-spends.` - これって誰(どのPrivateKey) に送るの? - データをチェーンの外に保存する。 - 記録したい情報のHash - 紐つけたいUTXOのTxHash番号 <- 紐つけたいとは? をUTXOに埋め込んでBroadcastする。 - Strict encoding (LNPBP-7) - Commit-conceal schemes - Single-use-seals - Proof-of-publication `Gen(p) -> l` `Close(l, m, s) -> w_1` `Verify( l, w_1, m) -> bool` `AluVM` https://github.com/AluVM `RISC functional machine` `Contractum` https://github.com/RGB-WG/contractum-lang `RGB smart contract language` `DAG` の形式で状態をオフチェーンで管理し、特定のタイミングでCommitmentをBitcoinチェーンに保存 RGB Protocolでできること 下記のようなスマートコントラクトの作成 ・さまざまな形態のアセット(Fungible、Non Fungible) ・アイデンティティ、レピュテーションシステム ・監査に利用可能な、証明可能なイベントログ ・その他任意で複雑なスマートコントラクト Rootstock(RSK) というものが昔あった # RSK https://stats.rsk.co/ Sidechain でEVM互換。Consensus Schemeは `Bitcoin Merged Mining` OpenAsset カラードコイン Counter Party カラードコイン Wrapped BTC(WBTC) `擬似的にBitcoinを扱うためのトークン` # Refs https://atl.recruit.co.jp/blog/5241/ https://github.com/LNP-BP https://www.docswell.com/s/monaka/K1D875-how-to-google-RGB-protocol#p34 https://www.rgbfaq.com/ https://github.com/LNP-BP/presentations/blob/master/Presentation%20slides/RGB%20%26%20Spectrum%20explanation%20for%20business.pdf https://spec.rgb.tech/ <- なにもない https://blackpaper.rgb.tech/design/stash <- あまり埋まっていない https://www.slideshare.net/Codemotion/single-use-seals-building-consensus-applications-on-bitcoin-peter-todd-blockchain-conf https://github.com/LNP-BP/lnpbps/issues/2 https://petertodd.org/2017/scalable-single-use-seal-asset-transfer https://building-on-bitcoin.com/docs/slides/Peter_Todd_BoB_2018.pdf `LNP/BP` プロトコルは階層構造 `Application` -> `Transport` -> `Internet` -> `Ethernet` なので `BP` -> `LNP` という階層構造を持たせた方が良い。 https://github.com/RGB-Tools/rgb-lib # Taro https://github.com/lightninglabs/taro Taproot Asset Representation Overlay (Taro) Taprootに依存している。 ビットコインのアップグレード、SegWit以来のアップデート。 - BIP340(BIP - シュノア) 迅速かつ安全でデータインテンシブが低い取引承認方法「シュノア署名」が使われている - BIP341(BIP - Taproot) MAST(Merklized Alternative Script Trees):データの一部だけチェーンに書き込む - BIP342(BIP - Tapscript) 柔軟なオペコードの設定 が含まれている。 Sparse-Merkle Tree Merkle-Sum Tree シュノア署名 MAST(Merklized Alternative Script Trees):データの一部だけチェーンに書き込む ECDSA 楕円曲線DSA ## Ref https://www.kraken.com/ja-jp/learn/what-is-taproot https://docs.lightning.engineering/the-lightning-network/taro # SetUp Environment ``` ~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy ``` # Prepare ``` ~$ sudo apt install make ``` # Installing go ``` ~$ sudo add-apt-repository ppa:longsleep/golang-backports ~$ sudo apt update ~$ sudo apt install golang ~$ go version go version go1.19.5 linux/amd64 ~$ mkdir go ~$ export GOPATH=~/go ~$ export PATH=$PATH:$GOPATH/bin # Note: update .bash_profile ``` ``` ~$ go install github.com/lightningnetwork/lnd@v0.15.5-beta ~$ cd go/pkg/mod/github.com/lightningnetwork/lnd@v0.15.5-beta/ ~/go/pkg/mod/github.com/lightningnetwork/lnd@v0.15.5-beta$ make ... github.com/lightningnetwork/lnd/cmd/lnd go build github.com/lightningnetwork/lnd/cmd/lnd: copying /tmp/go-build812751289/b001/exe/a.out: open lnd-debug: permission denied make: *** [Makefile:116: build] Error 1 ../lnd@v0.15.5-beta$ sudo make build ../lnd@v0.15.5-beta$ sudo make install ... ``` ``` ~$ go install github.com/btcsuite/btcd@v0.23.3 ```