1648024020
分散型アプリケーション(DApp)の最近の台頭により、DApp開発を容易にするために特別に作成されたフレームワークがより一般的になりました。
フロントエンド開発者向けのフレームワークと同様に、DAppフレームワークは、ソフトウェアを構築するために記述されたコードの一部であり、ブロックチェーン用のアプリケーションの構築を容易にします。フレームワークを使用する必要はありませんが、ソフトウェアをより良く、より速く開発するのに役立ちます。
この記事では、ブロックチェーンエンジニアが一般的に使用するいくつかの一般的なフレームワークを比較し、それらの長所、短所、およびネットワークについて説明します。
ただし、これに入る前に、利用可能なDAppの種類について説明しましょう。
分散型アプリケーション(DApps)は、Webアプリケーションと対話するための新しい方法を提供します。
「ブロックチェーンは未来である」または「未来は分散化されている」と聞いたことがあるかもしれません。この考え方は、新しいブロックチェーンベースのテクノロジーのクイックリリースに浸透しています。つまり、開発者は信頼できるフレームワークにアクセスできます。
ブロックチェーンテクノロジーに基づくDAppは、従来の中央サーバーではなく、複数のコンピューターまたはサーバーのピアツーピア(P2P)ネットワーク上で実行されます。これらのアプリケーションは、スマートコントラクトとコンセンサスプロセスまたはメカニズムの概念に基づいて構築されています。
これは、アプリケーションが分散化されている場合、最初に、優先ブロックチェーンネットワークにプッシュされた基盤となるブロックチェーンテクノロジーを使用して作成されることを意味します。
ブロックチェーンネットワークは、ノードまたはサーバーとして識別される数千台のコンピューターの集合であり、それぞれが個人によって所有されていることを忘れないでください。各ノード、サーバー、およびコンピューターは分散データベースになります。つまり、他のすべてのサーバーに同じデータのコピーがあります。
これらすべてを念頭に置いて、DAppを構築することのいくつかの利点は、中央サーバーがないため、ダウンタイムが発生しないことです。
また、中央サーバーがなく、すべてのサーバーが分散しているため、サイバー攻撃を受けにくく、シャットダウンすることもできません。1つの分散サーバーが攻撃されると、他のサーバーが気づきます。
また、オープンソースであるため、開発者にとって透過的でオープンです。
要約すると、DAppは、Google Cloud、Heroku、DigitalOceanなどの従来の中央サーバーやサービスプロバイダーを利用していません。むしろ、ブロックチェーンへの展開により、データを格納するための中央の場所やサードパーティによる制御がなく、透過的になります。
利用可能なさまざまなタイプのDAppは、DAppが解決するために構築されたブロックチェーンテクノロジーソリューションのさまざまなセクターを通してよく見られます。たとえば、最初に構築されたDAppはEthereumブロックチェーン上にありました。
同様に、ビットコインが構築された主な理由は、通貨転送のプロセスから金融仲介業者(つまり銀行)を削除することでした。ビットコインを使用すると、銀行を使用せずに送金をP2Pにすることができます。
ビットコインのように、DAppが意図的な役割を果たす他の多くのセクターがあります。
分散型ファイナンス(DeFi)は、ビットコインやイーサリアムなどの分散型マネーを使用して運用を行う金融サービスに付けられた用語です。
従来、銀行や政府などの中央機関を利用して運営されている金融サービスには、ローン、貯蓄プラン、保険などの金融サービスがあります。
しかし、多くの人は、中央当局にこれらの金融業務を実行させることは、詐欺、汚職、および管理ミスのために危険であると考えていました。これにより、DeFiが誕生しました。
DeFiアプリケーションを構築するには、プラットフォームを選択する必要があります(これには、Ethereum、Solana、Binance Smartコントラクトなどが含まれます)。DeFiの主な焦点は、透明性と分散化を提供しながら仲介者を排除することです。
DeFiアプリは、分散型取引所、保険、ローンサービスで使用され、Pancackeswapや1inchなどのアプリがあります。
分散型自律組織(DAO)は、コード/スマートコントラクトを通じて完全に機能する組織です。これらの組織は、与えられたルールに基づいて運営され、その後、それらの条件のみに基づいて運営されます。
したがって、DAOは、人間の活動の助けを借りずに会社を運営できます。分散型の取締役会は、DAOを実行するためのルールを作成します。つまり、取締役会を繰り返す必要はありません。
DAOの考えられる例は、無人タクシー会社です。この例では、任意のブロックチェーンにデプロイされたスマートコントラクトのコレクションで完全に動作するDAOLyftまたはDAOUberを使用できます。
これにより、 MakerDaoの運用方法、タクシーをいつどこに送るか、いつ車に燃料を補給するかなど、利益をどこに送るかなどの操作が合理化されます。
商品管理DAppは、ほとんどの場合、サプライチェーンのプロセスとシステムに関連付けられています。従来のサプライチェーンは、製品に洞察や透明性を提供しません。つまり、製品が実際に何でできているのか、どこから来ているのかを常に把握しているわけではありません。
ただし、サプライチェーンにブロックチェーンを使用すると、製品のトレーサビリティを利用できます。ブロックチェーンに保存されているデータは分散化されているため、製品の出所を追跡できます。この例はGXブロックです。
次に、DAppを構築するための最も一般的なフレームワークを見てみましょう。
Hardhatは、専門家に開発環境を提供するスマートコントラクトを構築するためのフレームワークです。この開発環境では、ユーザーはコンパイル、テストの実行、スマートコントラクトの間違いやデバッグの確認、分散型アプリケーションのデプロイを行うことができます。
Hardhatをインストールするには、コンピューターにNode.jsがインストールされていることを確認してください。次に、でプロジェクトを初期化しnpm init -y
、以下のコマンドを実行します。
$ npm install -D hardhat
正しくインストールされている場合は、次のコマンドでHardhatを実行します。
$ npx hardhat
888 888 888 888 888
888 888 888 888 888
888 888 888 888 888
8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
888 888 "88b 888P" d88" 888 888 "88b "88b 888
888 888 .d888888 888 888 888 888 888 .d888888 888
888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
Welcome to Hardhat v2.0.8
? What do you want to do? …
❯ Create a sample project
Create an empty hardhat.config.js
Quit
npx
インストール時にNode.jsが付属し、ローカル環境にインストールされた実行可能ファイルの実行に役立ちます。
プロジェクトでHardhatが確実に実行されるようにするには、次のコマンドを再度実行します。
$ npx hardhat
Hardhat version 2.0.8
Usage: hardhat [GLOBAL OPTIONS] <TASK> [TASK OPTIONS]
GLOBAL OPTIONS:
--config A Hardhat config file.
--emoji Use emoji in messages.
--help Shows this message, or a task's help if its name is provided
--max-memory The maximum amount of memory that Hardhat can use.
--network The network to connect to.
--show-stack-traces Show stack traces.
--tsconfig A TypeScript config file.
--verbose Enables Hardhat verbose logging
--version Shows hardhat's version.
AVAILABLE TASKS:
accounts Prints the list of accounts
check Check whatever you need
clean Clears the cache and deletes all artifacts
compile Compiles the entire project, building all artifacts
console Opens a hardhat console
flatten Flattens and prints contracts and their dependencies
help Prints this message
node Starts a JSON-RPC server on top of Hardhat Network
run Runs a user-defined script after compiling the project
test Runs mocha tests
To get help for a specific task run: npx hardhat help [task]
This same command also checks the available tasks Hardhart offers. Hardhat also offers an ecosystem of plugins, meaning there are more libraries you must install when working with Hardhat, including the following:npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers
これも:
hardhat-waffle
、スマートコントラクトをテストするためのプラグインhardhat-ethers
、フロントエンドからスマートコントラクトを操作できますchai
、Node.jsテストライブラリスマートコントラクトは、従来のアプリケーションのように中央サーバーにデプロイできないことに注意してください。むしろ、ETH通貨の使用を必要とするイーサリアムブロックチェーンネットワークに展開する必要があります。
イーサリアムネットワークはサーバーであるため、メインネットとも呼ばれるイーサリアムネットワークに展開する前に、スマートコントラクトをテストしてください。テストするには、HardhatがHardhatNetworkで提供するローカルブロックチェーンが必要です。
このネットワークを開始するには、次のコマンドを実行します。
$ npx hardhat node
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
Accounts
========
Account #0: 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 (10000 ETH)
Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
Account #1: 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 (10000 ETH)
Private Key: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
...
プロジェクトフォルダーでGreeter.sol
は、contractsフォルダーに次のように表示されます。
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract Greeter {
string private greeting;
constructor(string memory _greeting) {
console.log("Deploying a Greeter with greeting:", _greeting);
greeting = _greeting;
}
function greet() public view returns (string memory) {
return greeting;
}
function setGreeting(string memory _greeting) public {
console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
greeting = _greeting;
}
}
これをコンパイルするには、以下を実行します。
npx hardhat compile
HardhatをDAppフレームワークとして使用することの最も一般的な利点のいくつかは次のとおりです。これらは最も一般的であり、パーソナライズされたメリットもある可能性があることを忘れないでください。
まず、Hardhatは、分散型アプリケーションを構築するために最も使用されているフレームワークの1つであるため、積極的にメンテナンスされています。
これは、GitHubの17,000人を超えるユーザーと、この記事の投稿時点で4.6k人のメンバーがいるアクティブなDiscordコミュニティのおかげで、大規模なコミュニティサポートを備えたオープンソース形式に起因する可能性があります。それは継続的に開発中であり、急速に成長しています。
また、JavaScriptとTypeScriptに基づくテクノロジーにより、JavaScript開発者は簡単に理解できます。
Hardhatの主な欠点の1つは、ドキュメントが開始方法についてかなり簡潔であるため、初心者ではなく専門家向けであることです。DAppを構築する初心者は、Hardhatを調べる前に、Truffleなどの他のフレームワークを試す必要があるかもしれません。
Truffleは、Ethereumブロックチェーン上に分散型アプリケーションを構築するためのもう1つのフレームワークです。これは最も人気があり、先駆的なフレームワークの1つです。これは、コンパイル、展開、およびテストの支援を提供します。
他のほとんどのフレームワークはTruffleのパスに従いました。また、DApp開発の初心者の場合は、初心者向けのセットアップのため、Truffleに遭遇する可能性があります。
また、Binance Smart Chain、Hyperledger、Polygonなどの他のアーンドバリューマネジメント互換(EVM)ブロックチェーンにも使用できます。また、SolidityおよびVyper言語もサポートしています。
また、Node.jsに精通している場合は、TruffleがJavaScriptで記述されているため、これはエッジです。
開始するには、PCにNode.jsがインストールされている必要があります。インストールは簡単です。プロジェクトで次のコマンドを実行するだけです。
$ npm install -g truffle
次に、プロジェクトでTruffleを初期化します。
$ truffle init
成功した場合、これはあなたが以下に見るべきものです:
Starting init...
================
> Copying project files to /Users/macbookpro/Desktop/Projects/dapp-truffle
Init successful, sweet!
Try our scaffold commands to get started:
$ truffle create contract YourContractName # scaffold a contract
$ truffle create test YourTestName # scaffold a test
トリュフスイート-トリュフスイート
今すぐサインアップして、Truffleメーリングリストのメンバーになりましょう。少量のメーリングリストに追加されます。このメーリングリストを使用して、将来の変更や開発のアイデアを伝え、Truffleの開発を形作ることができます。
プロジェクトの構成は次のとおりです。
$ dapp-truffle ls -1
contracts
migrations
test
truffle-config.js
Truffleは、メインネットにデプロイする必要なしにDAppを実行およびテストするための開発ネットワークを提供し、テスト用のローカル開発ブロックチェーンとして機能します。
このtruffle-config.js
ファイルでは、ネットワークオブジェクトに開発および高度なネットワーク構成が付属しています。
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*", // match any network
websockets: true
},
live: {
host: "178.25.19.88", // Random IP for example purposes (do not use)
port: 80,
network_id: 1, // Ethereum public network
}
}
開発構成は、次のコマンドを実行するデフォルトのネットワークです。
$ truffle migrate --network
スマートコントラクトをコンパイルするには、次のコマンドを使用します。
truffle compile
その人気と普及により、Truffleはユーザーから幅広いサポートを受けており、投稿時点で35,000人を超えるGitHubユーザーがいます。
また、Hardhatと同様に、メンテナンスは継続的にアクティブなサポートを提供し、Truffleはローカルブロックチェーン、テストネットをサポートし、メインネットに簡単にデプロイできます。
Truffleでのデバッグは、Hardhatほど簡単ではありません。これは、Truffleではイベントを作成してログにスローし、そのイベントを探す必要があるためです。一方、Hardhatではconsole.log
、ターミナルにプロンプトメッセージが表示されるため、デバッグが高速になります。
Embarkは、フルスタックフレームワークと見なされるEVMブロックチェーンのもう1つのフレームワークです。これは、フレームワークが分散型アプリケーションのフロントエンドとバックエンド全体を同時に構築するソリューションを提供することを意味します。
Embarkは、Solidityスマートコントラクトとフロントエンド(HTMLおよびJavaScript)コードの変更を監視し、それらをブロックチェーンネットワークに再デプロイします。
Embarkをインストールする前に、コンピューターにNode.jsがインストールされていることを確認してください。また、Embarkでは、次のものもインストールする必要があります。
これらはオプションですが、インストールすることをお勧めします。
Embarkのインストールは非常に簡単です。
$ npm -g install embark
Embarkの使用を開始するには、最初に次のコマンドを実行する必要があります。
$ embark demo
$ cd embark_demo
これにより、作業に必要なすべてのフォルダーを含むスキャフォールドアプリケーションが作成されます。それが見えたら、アプリケーションを実行してイーサリアムノードとIPFSノードを起動します。Embarkはコードの変更を監視して、再デプロイすることを忘れないでください。
$ embark run
相互作用を通じてテストできるように、ブロックチェーンネットワークに接続する必要があることを忘れないでください。Embarkは、GethやParityなどのクライアントと連携できます。
このconfig/blockchain.js
ファイルでは、必要なブロックチェーンを構成できます。以下のコードは、Embarkのドキュメントからのサンプルです。
module.exports = {
default: {
enabled: true,
client: "geth"
},
development: {
clientConfig: {
miningMode: 'dev'
}
},
testnet: {
endpoint: "https://external-node.com",
accounts: [
{
mnemonic: "12 word mnemonic"
}
]
}
}
Embarkには、GitHubコミュニティからの星がHardhatよりもわずかに多く、約3.4kの星があります。また、コンソールではなくWebへの展開に関心のある人のために、Embarkが取り組んでいるプロセスの調査を提供するUIダッシュボードが付属しています。
また、前述のように、これはフルスタックソリューションの構築に役立つフレームワークであり、この記事で説明した他のフレームワークでは実行できません。
Embarkを実行しようとしたときの観察から、インストール中にいくつかのエラーが発生しました。その後、現在インストールされているバージョンを確認すると、端末に警告が表示されました。
また、この記事を書いている時点で14か月間プロジェクトへの貢献がなかったため、プロジェクトは古くなっているように見えます。
ブラウニーはEVMのアプリケーションを構築するフレームワークですが、Pythonベースです。つまり、Pythonスマートコントラクト言語であるプログラミング言語Vyperをサポートしています。ブラウニーはSolidityもサポートしています。
この記事で言及されている他のフレームワークとは異なり、ブラウニーのテスト言語は仮説を使用したPythonです。
全体として、Brownieは展開、テスト、およびデバッグを処理します。ローカルまたはテストネットブロックチェーンにデプロイする場合、デプロイは簡単です。
ブラウニーはメインネットフォークもサポートしています。メインネットフォークは、ローカルまたはテストネットブロックチェーンで利用できない特定のスマートコントラクトと通信する場合に、現在のブロックチェーンのライブスナップショットを取得します。
インストールはpipx
またはpip
を介して行うことができますpipx
が、ブラウニーが推奨する方法です。
pipx
お持ちでない場合はインストールしてください。
python3 -m pip install --user pipx
python3 -m pipx ensurepath
次に、ブラウニーをインストールします。
pipx install eth-brownie
ブラウニーは、テストを可能にする開発環境とライブ環境を提供します。これらの環境は、いくつかのコマンドを使用して端末で構成できます。
既存のネットワークを表示するには、以下を使用します。
$ brownie networks list
Brownie - Python development framework for Ethereum
The following networks are declared:
Ethereum
├─Mainnet (Infura): mainnet
├─Ropsten (Infura): ropsten
├─Rinkeby (Infura): rinkeby
├─Goerli (Infura): goerli
└─Kovan (Infura): kovan
Ethereum Classic
├─Mainnet: etc
└─Kotti: kotti
Development
├─Ganache-CLI: development
└─Ganache-CLI (Mainnet Fork): mainnet-fork
新しいネットワークを追加するには、次のコマンドを追加します。
$ brownie networks add \[environment\] [id] host=\[host\] [KEY=VALUE, ...]
ブラウニーには、他のフレームワークでは提供されていない、プロジェクトの相互作用のための組み込みのコンソールがあります。たとえば、コンソールからネットワークを追加すると、コードベースにネットワークを書き込むのではなく、コマンドを実行してネットワークをすばやく追加できます。
また、2つの異なるスマートコントラクト言語であるSolidityとVyperを完全にサポートしているため、他の言語よりも優れています。
また、テスト実行時のインタラクティブモードでは、テストが失敗すると、テストが停止してコンソールに表示され、ユーザーに警告します。
ブラウニーはPythonベースのフレームワークであるため、JavaScript開発者はフレームワークを簡単に使用できません。
OpenZepplinは、スマートコントラクトをより迅速に構築するのに役立つプラグインを備えたツールキットです。たとえば、ERC-20やERC-721の実装などの主要な標準トークンがあります。
OpenZeppelinでスマートコントラクトを使用するには、それらを独自のスマートコントラクトにインポートする必要があります。OpenZeppelinは実際にはnpmパッケージとして配布されているため、最初にNode.jsをインストールする必要があることに注意してください。
OpenZeppelinをインストールするには、次のコマンドを使用します。
$ npm install @openzeppelin/cli
OpenZeppelinプロジェクトを設定するには、以下を使用します。
$ npx openzeppelin init
以下に書かれているOpenZeppelinのドキュメントからのスマートコントラクトの例を使用して、次のコードをコンパイルする必要があります。
// contracts/Counter.sol
pragma solidity ^0.5.0;
contract Counter {
uint256 public value;
function increase() public {
value++;
}
}
コンパイルするには、以下を実行します。
$ oz compile
openzeppelin compile
またはを使用できますがoz compile
、oz
選択するための短いコマンドです。
スマートコントラクトの展開は、それらをコンパイルするのと同じくらい簡単です。OpenZeppelinは、ローカルブロックチェーンを持つことができる開発用のネットワークとしてGanacheを使用しています。Ganacheをまだインストールしていない場合は、インストールする必要があります。
$ npm install ganache-cli
新しいプロセスを開始するには、次を実行します。
$ npx ganache-cli --deterministic
次に、スマートコントラクトを展開します。
$ npx oz deploy
✓ Compiled contracts with solc 0.5.9 (commit.e560f70d)
? Choose the kind of deployment: upgradeable
? Pick a network: development
? Pick a contract to instantiate: Counter
✓ Added contract Counter
✓ Contract Counter deployed
? Call a function to initialize the instance after creating it?: No
✓ Setting everything up to create contract instances
✓ Instance created at 0xCfEB869F69431e42cdB54A4F4f105C19C080A601
OpenZeppelinには、ERC-20の作成など、多くの機能が実装されています。これはOpenZeppelin内ですでに利用可能であるため、車輪の再発明を行う必要がなく、開発の時間を節約できます。
また、OpenZeppelinが提供するものを理解するのに役立つ完全なドキュメントもあります。そのコントラクト機能のほとんどはアップグレード可能です。つまり、プラグインを自分で変更できます。
OpenZeppelinはアップグレード可能なコントラクトを提供しますが、欠点は、実装を処理するための管理者の役割があり、セキュリティリスクを課す可能性があることです。
プロジェクトに適切なフレームワークを選択する最良の方法は、構築するものと必要なツールキットを理解することです。おそらく、Pythonベースの何かが必要な場合があります。これは、ブラウニーフレームワークを唯一のオプションとして確実に示しています。
フレームワークを選択する際に考慮すべきもう1つの側面は、そのコミュニティを理解し、選択したフレームワークをサポートすることです。大きなバグがある場合はどうなりますか?あなたとあなたのチームはそれを修正できますか?それとも、コミュニティはそれを修正するのに十分なほど強力ですか?
最近のDAppの開発の増加に伴い、アプリケーションの構築を高速化するために、より多くのツールが登場しました。最も一般的で最も使用されているのはHardhatとTruffleですが、これはすべての開発者に限定されるものではありません。
プロジェクトを念頭に置いている場合は、各フレームワークのドキュメントをざっと読んで、どれが最適かを確認してください。これらのフレームワークは常にメンテナンスが行われており、Web3のオープンソースであるため、サポートも必要になる場合があることに注意してください。
ソース:https ://blog.logrocket.com/top-5-decentralized-app-development-frameworks/
#framework #dapp #hardhat #truffle
1648024020
分散型アプリケーション(DApp)の最近の台頭により、DApp開発を容易にするために特別に作成されたフレームワークがより一般的になりました。
フロントエンド開発者向けのフレームワークと同様に、DAppフレームワークは、ソフトウェアを構築するために記述されたコードの一部であり、ブロックチェーン用のアプリケーションの構築を容易にします。フレームワークを使用する必要はありませんが、ソフトウェアをより良く、より速く開発するのに役立ちます。
この記事では、ブロックチェーンエンジニアが一般的に使用するいくつかの一般的なフレームワークを比較し、それらの長所、短所、およびネットワークについて説明します。
ただし、これに入る前に、利用可能なDAppの種類について説明しましょう。
分散型アプリケーション(DApps)は、Webアプリケーションと対話するための新しい方法を提供します。
「ブロックチェーンは未来である」または「未来は分散化されている」と聞いたことがあるかもしれません。この考え方は、新しいブロックチェーンベースのテクノロジーのクイックリリースに浸透しています。つまり、開発者は信頼できるフレームワークにアクセスできます。
ブロックチェーンテクノロジーに基づくDAppは、従来の中央サーバーではなく、複数のコンピューターまたはサーバーのピアツーピア(P2P)ネットワーク上で実行されます。これらのアプリケーションは、スマートコントラクトとコンセンサスプロセスまたはメカニズムの概念に基づいて構築されています。
これは、アプリケーションが分散化されている場合、最初に、優先ブロックチェーンネットワークにプッシュされた基盤となるブロックチェーンテクノロジーを使用して作成されることを意味します。
ブロックチェーンネットワークは、ノードまたはサーバーとして識別される数千台のコンピューターの集合であり、それぞれが個人によって所有されていることを忘れないでください。各ノード、サーバー、およびコンピューターは分散データベースになります。つまり、他のすべてのサーバーに同じデータのコピーがあります。
これらすべてを念頭に置いて、DAppを構築することのいくつかの利点は、中央サーバーがないため、ダウンタイムが発生しないことです。
また、中央サーバーがなく、すべてのサーバーが分散しているため、サイバー攻撃を受けにくく、シャットダウンすることもできません。1つの分散サーバーが攻撃されると、他のサーバーが気づきます。
また、オープンソースであるため、開発者にとって透過的でオープンです。
要約すると、DAppは、Google Cloud、Heroku、DigitalOceanなどの従来の中央サーバーやサービスプロバイダーを利用していません。むしろ、ブロックチェーンへの展開により、データを格納するための中央の場所やサードパーティによる制御がなく、透過的になります。
利用可能なさまざまなタイプのDAppは、DAppが解決するために構築されたブロックチェーンテクノロジーソリューションのさまざまなセクターを通してよく見られます。たとえば、最初に構築されたDAppはEthereumブロックチェーン上にありました。
同様に、ビットコインが構築された主な理由は、通貨転送のプロセスから金融仲介業者(つまり銀行)を削除することでした。ビットコインを使用すると、銀行を使用せずに送金をP2Pにすることができます。
ビットコインのように、DAppが意図的な役割を果たす他の多くのセクターがあります。
分散型ファイナンス(DeFi)は、ビットコインやイーサリアムなどの分散型マネーを使用して運用を行う金融サービスに付けられた用語です。
従来、銀行や政府などの中央機関を利用して運営されている金融サービスには、ローン、貯蓄プラン、保険などの金融サービスがあります。
しかし、多くの人は、中央当局にこれらの金融業務を実行させることは、詐欺、汚職、および管理ミスのために危険であると考えていました。これにより、DeFiが誕生しました。
DeFiアプリケーションを構築するには、プラットフォームを選択する必要があります(これには、Ethereum、Solana、Binance Smartコントラクトなどが含まれます)。DeFiの主な焦点は、透明性と分散化を提供しながら仲介者を排除することです。
DeFiアプリは、分散型取引所、保険、ローンサービスで使用され、Pancackeswapや1inchなどのアプリがあります。
分散型自律組織(DAO)は、コード/スマートコントラクトを通じて完全に機能する組織です。これらの組織は、与えられたルールに基づいて運営され、その後、それらの条件のみに基づいて運営されます。
したがって、DAOは、人間の活動の助けを借りずに会社を運営できます。分散型の取締役会は、DAOを実行するためのルールを作成します。つまり、取締役会を繰り返す必要はありません。
DAOの考えられる例は、無人タクシー会社です。この例では、任意のブロックチェーンにデプロイされたスマートコントラクトのコレクションで完全に動作するDAOLyftまたはDAOUberを使用できます。
これにより、 MakerDaoの運用方法、タクシーをいつどこに送るか、いつ車に燃料を補給するかなど、利益をどこに送るかなどの操作が合理化されます。
商品管理DAppは、ほとんどの場合、サプライチェーンのプロセスとシステムに関連付けられています。従来のサプライチェーンは、製品に洞察や透明性を提供しません。つまり、製品が実際に何でできているのか、どこから来ているのかを常に把握しているわけではありません。
ただし、サプライチェーンにブロックチェーンを使用すると、製品のトレーサビリティを利用できます。ブロックチェーンに保存されているデータは分散化されているため、製品の出所を追跡できます。この例はGXブロックです。
次に、DAppを構築するための最も一般的なフレームワークを見てみましょう。
Hardhatは、専門家に開発環境を提供するスマートコントラクトを構築するためのフレームワークです。この開発環境では、ユーザーはコンパイル、テストの実行、スマートコントラクトの間違いやデバッグの確認、分散型アプリケーションのデプロイを行うことができます。
Hardhatをインストールするには、コンピューターにNode.jsがインストールされていることを確認してください。次に、でプロジェクトを初期化しnpm init -y
、以下のコマンドを実行します。
$ npm install -D hardhat
正しくインストールされている場合は、次のコマンドでHardhatを実行します。
$ npx hardhat
888 888 888 888 888
888 888 888 888 888
888 888 888 888 888
8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
888 888 "88b 888P" d88" 888 888 "88b "88b 888
888 888 .d888888 888 888 888 888 888 .d888888 888
888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
Welcome to Hardhat v2.0.8
? What do you want to do? …
❯ Create a sample project
Create an empty hardhat.config.js
Quit
npx
インストール時にNode.jsが付属し、ローカル環境にインストールされた実行可能ファイルの実行に役立ちます。
プロジェクトでHardhatが確実に実行されるようにするには、次のコマンドを再度実行します。
$ npx hardhat
Hardhat version 2.0.8
Usage: hardhat [GLOBAL OPTIONS] <TASK> [TASK OPTIONS]
GLOBAL OPTIONS:
--config A Hardhat config file.
--emoji Use emoji in messages.
--help Shows this message, or a task's help if its name is provided
--max-memory The maximum amount of memory that Hardhat can use.
--network The network to connect to.
--show-stack-traces Show stack traces.
--tsconfig A TypeScript config file.
--verbose Enables Hardhat verbose logging
--version Shows hardhat's version.
AVAILABLE TASKS:
accounts Prints the list of accounts
check Check whatever you need
clean Clears the cache and deletes all artifacts
compile Compiles the entire project, building all artifacts
console Opens a hardhat console
flatten Flattens and prints contracts and their dependencies
help Prints this message
node Starts a JSON-RPC server on top of Hardhat Network
run Runs a user-defined script after compiling the project
test Runs mocha tests
To get help for a specific task run: npx hardhat help [task]
This same command also checks the available tasks Hardhart offers. Hardhat also offers an ecosystem of plugins, meaning there are more libraries you must install when working with Hardhat, including the following:npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers
これも:
hardhat-waffle
、スマートコントラクトをテストするためのプラグインhardhat-ethers
、フロントエンドからスマートコントラクトを操作できますchai
、Node.jsテストライブラリスマートコントラクトは、従来のアプリケーションのように中央サーバーにデプロイできないことに注意してください。むしろ、ETH通貨の使用を必要とするイーサリアムブロックチェーンネットワークに展開する必要があります。
イーサリアムネットワークはサーバーであるため、メインネットとも呼ばれるイーサリアムネットワークに展開する前に、スマートコントラクトをテストしてください。テストするには、HardhatがHardhatNetworkで提供するローカルブロックチェーンが必要です。
このネットワークを開始するには、次のコマンドを実行します。
$ npx hardhat node
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
Accounts
========
Account #0: 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 (10000 ETH)
Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
Account #1: 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 (10000 ETH)
Private Key: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
...
プロジェクトフォルダーでGreeter.sol
は、contractsフォルダーに次のように表示されます。
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract Greeter {
string private greeting;
constructor(string memory _greeting) {
console.log("Deploying a Greeter with greeting:", _greeting);
greeting = _greeting;
}
function greet() public view returns (string memory) {
return greeting;
}
function setGreeting(string memory _greeting) public {
console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
greeting = _greeting;
}
}
これをコンパイルするには、以下を実行します。
npx hardhat compile
HardhatをDAppフレームワークとして使用することの最も一般的な利点のいくつかは次のとおりです。これらは最も一般的であり、パーソナライズされたメリットもある可能性があることを忘れないでください。
まず、Hardhatは、分散型アプリケーションを構築するために最も使用されているフレームワークの1つであるため、積極的にメンテナンスされています。
これは、GitHubの17,000人を超えるユーザーと、この記事の投稿時点で4.6k人のメンバーがいるアクティブなDiscordコミュニティのおかげで、大規模なコミュニティサポートを備えたオープンソース形式に起因する可能性があります。それは継続的に開発中であり、急速に成長しています。
また、JavaScriptとTypeScriptに基づくテクノロジーにより、JavaScript開発者は簡単に理解できます。
Hardhatの主な欠点の1つは、ドキュメントが開始方法についてかなり簡潔であるため、初心者ではなく専門家向けであることです。DAppを構築する初心者は、Hardhatを調べる前に、Truffleなどの他のフレームワークを試す必要があるかもしれません。
Truffleは、Ethereumブロックチェーン上に分散型アプリケーションを構築するためのもう1つのフレームワークです。これは最も人気があり、先駆的なフレームワークの1つです。これは、コンパイル、展開、およびテストの支援を提供します。
他のほとんどのフレームワークはTruffleのパスに従いました。また、DApp開発の初心者の場合は、初心者向けのセットアップのため、Truffleに遭遇する可能性があります。
また、Binance Smart Chain、Hyperledger、Polygonなどの他のアーンドバリューマネジメント互換(EVM)ブロックチェーンにも使用できます。また、SolidityおよびVyper言語もサポートしています。
また、Node.jsに精通している場合は、TruffleがJavaScriptで記述されているため、これはエッジです。
開始するには、PCにNode.jsがインストールされている必要があります。インストールは簡単です。プロジェクトで次のコマンドを実行するだけです。
$ npm install -g truffle
次に、プロジェクトでTruffleを初期化します。
$ truffle init
成功した場合、これはあなたが以下に見るべきものです:
Starting init...
================
> Copying project files to /Users/macbookpro/Desktop/Projects/dapp-truffle
Init successful, sweet!
Try our scaffold commands to get started:
$ truffle create contract YourContractName # scaffold a contract
$ truffle create test YourTestName # scaffold a test
トリュフスイート-トリュフスイート
今すぐサインアップして、Truffleメーリングリストのメンバーになりましょう。少量のメーリングリストに追加されます。このメーリングリストを使用して、将来の変更や開発のアイデアを伝え、Truffleの開発を形作ることができます。
プロジェクトの構成は次のとおりです。
$ dapp-truffle ls -1
contracts
migrations
test
truffle-config.js
Truffleは、メインネットにデプロイする必要なしにDAppを実行およびテストするための開発ネットワークを提供し、テスト用のローカル開発ブロックチェーンとして機能します。
このtruffle-config.js
ファイルでは、ネットワークオブジェクトに開発および高度なネットワーク構成が付属しています。
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*", // match any network
websockets: true
},
live: {
host: "178.25.19.88", // Random IP for example purposes (do not use)
port: 80,
network_id: 1, // Ethereum public network
}
}
開発構成は、次のコマンドを実行するデフォルトのネットワークです。
$ truffle migrate --network
スマートコントラクトをコンパイルするには、次のコマンドを使用します。
truffle compile
その人気と普及により、Truffleはユーザーから幅広いサポートを受けており、投稿時点で35,000人を超えるGitHubユーザーがいます。
また、Hardhatと同様に、メンテナンスは継続的にアクティブなサポートを提供し、Truffleはローカルブロックチェーン、テストネットをサポートし、メインネットに簡単にデプロイできます。
Truffleでのデバッグは、Hardhatほど簡単ではありません。これは、Truffleではイベントを作成してログにスローし、そのイベントを探す必要があるためです。一方、Hardhatではconsole.log
、ターミナルにプロンプトメッセージが表示されるため、デバッグが高速になります。
Embarkは、フルスタックフレームワークと見なされるEVMブロックチェーンのもう1つのフレームワークです。これは、フレームワークが分散型アプリケーションのフロントエンドとバックエンド全体を同時に構築するソリューションを提供することを意味します。
Embarkは、Solidityスマートコントラクトとフロントエンド(HTMLおよびJavaScript)コードの変更を監視し、それらをブロックチェーンネットワークに再デプロイします。
Embarkをインストールする前に、コンピューターにNode.jsがインストールされていることを確認してください。また、Embarkでは、次のものもインストールする必要があります。
これらはオプションですが、インストールすることをお勧めします。
Embarkのインストールは非常に簡単です。
$ npm -g install embark
Embarkの使用を開始するには、最初に次のコマンドを実行する必要があります。
$ embark demo
$ cd embark_demo
これにより、作業に必要なすべてのフォルダーを含むスキャフォールドアプリケーションが作成されます。それが見えたら、アプリケーションを実行してイーサリアムノードとIPFSノードを起動します。Embarkはコードの変更を監視して、再デプロイすることを忘れないでください。
$ embark run
相互作用を通じてテストできるように、ブロックチェーンネットワークに接続する必要があることを忘れないでください。Embarkは、GethやParityなどのクライアントと連携できます。
このconfig/blockchain.js
ファイルでは、必要なブロックチェーンを構成できます。以下のコードは、Embarkのドキュメントからのサンプルです。
module.exports = {
default: {
enabled: true,
client: "geth"
},
development: {
clientConfig: {
miningMode: 'dev'
}
},
testnet: {
endpoint: "https://external-node.com",
accounts: [
{
mnemonic: "12 word mnemonic"
}
]
}
}
Embarkには、GitHubコミュニティからの星がHardhatよりもわずかに多く、約3.4kの星があります。また、コンソールではなくWebへの展開に関心のある人のために、Embarkが取り組んでいるプロセスの調査を提供するUIダッシュボードが付属しています。
また、前述のように、これはフルスタックソリューションの構築に役立つフレームワークであり、この記事で説明した他のフレームワークでは実行できません。
Embarkを実行しようとしたときの観察から、インストール中にいくつかのエラーが発生しました。その後、現在インストールされているバージョンを確認すると、端末に警告が表示されました。
また、この記事を書いている時点で14か月間プロジェクトへの貢献がなかったため、プロジェクトは古くなっているように見えます。
ブラウニーはEVMのアプリケーションを構築するフレームワークですが、Pythonベースです。つまり、Pythonスマートコントラクト言語であるプログラミング言語Vyperをサポートしています。ブラウニーはSolidityもサポートしています。
この記事で言及されている他のフレームワークとは異なり、ブラウニーのテスト言語は仮説を使用したPythonです。
全体として、Brownieは展開、テスト、およびデバッグを処理します。ローカルまたはテストネットブロックチェーンにデプロイする場合、デプロイは簡単です。
ブラウニーはメインネットフォークもサポートしています。メインネットフォークは、ローカルまたはテストネットブロックチェーンで利用できない特定のスマートコントラクトと通信する場合に、現在のブロックチェーンのライブスナップショットを取得します。
インストールはpipx
またはpip
を介して行うことができますpipx
が、ブラウニーが推奨する方法です。
pipx
お持ちでない場合はインストールしてください。
python3 -m pip install --user pipx
python3 -m pipx ensurepath
次に、ブラウニーをインストールします。
pipx install eth-brownie
ブラウニーは、テストを可能にする開発環境とライブ環境を提供します。これらの環境は、いくつかのコマンドを使用して端末で構成できます。
既存のネットワークを表示するには、以下を使用します。
$ brownie networks list
Brownie - Python development framework for Ethereum
The following networks are declared:
Ethereum
├─Mainnet (Infura): mainnet
├─Ropsten (Infura): ropsten
├─Rinkeby (Infura): rinkeby
├─Goerli (Infura): goerli
└─Kovan (Infura): kovan
Ethereum Classic
├─Mainnet: etc
└─Kotti: kotti
Development
├─Ganache-CLI: development
└─Ganache-CLI (Mainnet Fork): mainnet-fork
新しいネットワークを追加するには、次のコマンドを追加します。
$ brownie networks add \[environment\] [id] host=\[host\] [KEY=VALUE, ...]
ブラウニーには、他のフレームワークでは提供されていない、プロジェクトの相互作用のための組み込みのコンソールがあります。たとえば、コンソールからネットワークを追加すると、コードベースにネットワークを書き込むのではなく、コマンドを実行してネットワークをすばやく追加できます。
また、2つの異なるスマートコントラクト言語であるSolidityとVyperを完全にサポートしているため、他の言語よりも優れています。
また、テスト実行時のインタラクティブモードでは、テストが失敗すると、テストが停止してコンソールに表示され、ユーザーに警告します。
ブラウニーはPythonベースのフレームワークであるため、JavaScript開発者はフレームワークを簡単に使用できません。
OpenZepplinは、スマートコントラクトをより迅速に構築するのに役立つプラグインを備えたツールキットです。たとえば、ERC-20やERC-721の実装などの主要な標準トークンがあります。
OpenZeppelinでスマートコントラクトを使用するには、それらを独自のスマートコントラクトにインポートする必要があります。OpenZeppelinは実際にはnpmパッケージとして配布されているため、最初にNode.jsをインストールする必要があることに注意してください。
OpenZeppelinをインストールするには、次のコマンドを使用します。
$ npm install @openzeppelin/cli
OpenZeppelinプロジェクトを設定するには、以下を使用します。
$ npx openzeppelin init
以下に書かれているOpenZeppelinのドキュメントからのスマートコントラクトの例を使用して、次のコードをコンパイルする必要があります。
// contracts/Counter.sol
pragma solidity ^0.5.0;
contract Counter {
uint256 public value;
function increase() public {
value++;
}
}
コンパイルするには、以下を実行します。
$ oz compile
openzeppelin compile
またはを使用できますがoz compile
、oz
選択するための短いコマンドです。
スマートコントラクトの展開は、それらをコンパイルするのと同じくらい簡単です。OpenZeppelinは、ローカルブロックチェーンを持つことができる開発用のネットワークとしてGanacheを使用しています。Ganacheをまだインストールしていない場合は、インストールする必要があります。
$ npm install ganache-cli
新しいプロセスを開始するには、次を実行します。
$ npx ganache-cli --deterministic
次に、スマートコントラクトを展開します。
$ npx oz deploy
✓ Compiled contracts with solc 0.5.9 (commit.e560f70d)
? Choose the kind of deployment: upgradeable
? Pick a network: development
? Pick a contract to instantiate: Counter
✓ Added contract Counter
✓ Contract Counter deployed
? Call a function to initialize the instance after creating it?: No
✓ Setting everything up to create contract instances
✓ Instance created at 0xCfEB869F69431e42cdB54A4F4f105C19C080A601
OpenZeppelinには、ERC-20の作成など、多くの機能が実装されています。これはOpenZeppelin内ですでに利用可能であるため、車輪の再発明を行う必要がなく、開発の時間を節約できます。
また、OpenZeppelinが提供するものを理解するのに役立つ完全なドキュメントもあります。そのコントラクト機能のほとんどはアップグレード可能です。つまり、プラグインを自分で変更できます。
OpenZeppelinはアップグレード可能なコントラクトを提供しますが、欠点は、実装を処理するための管理者の役割があり、セキュリティリスクを課す可能性があることです。
プロジェクトに適切なフレームワークを選択する最良の方法は、構築するものと必要なツールキットを理解することです。おそらく、Pythonベースの何かが必要な場合があります。これは、ブラウニーフレームワークを唯一のオプションとして確実に示しています。
フレームワークを選択する際に考慮すべきもう1つの側面は、そのコミュニティを理解し、選択したフレームワークをサポートすることです。大きなバグがある場合はどうなりますか?あなたとあなたのチームはそれを修正できますか?それとも、コミュニティはそれを修正するのに十分なほど強力ですか?
最近のDAppの開発の増加に伴い、アプリケーションの構築を高速化するために、より多くのツールが登場しました。最も一般的で最も使用されているのはHardhatとTruffleですが、これはすべての開発者に限定されるものではありません。
プロジェクトを念頭に置いている場合は、各フレームワークのドキュメントをざっと読んで、どれが最適かを確認してください。これらのフレームワークは常にメンテナンスが行われており、Web3のオープンソースであるため、サポートも必要になる場合があることに注意してください。
ソース:https ://blog.logrocket.com/top-5-decentralized-app-development-frameworks/