DAPP開発(1) - web3.0とスマートコントラクト

web1.0~3.0は、何年も前、インターネットがそれほど発達していなかった頃で、インターネット上の情報を閲覧したり視聴したりすることしかできなかったもので、これが1.0です。その後、多くのソフトウェアが登場しました。閲覧するだけでなく自分の意見を表明することもできます。モバイルアプリは全盛で、各アプリケーションはデータを保存するための独自のデータベースを持っています。これは 2.0 ですが、今度は 3.0 が登場します。分散化の考え方によりデータベースが廃止され、DAPP が使用できるようになります。データベースなしでも実現可能です。

ユーザーがコンテンツを作成した後、それは大手メーカーのコンテンツやデータになるのではなく、自分自身の所有権を持ち、使用したい人には使用許可を得るか使用料を支払う必要があります。コンテンツの所有者。

web3.0 のエコロジーには次のものが含まれます。

分散型アイデンティティ、ユーザー インターフェイス、分散型アプリケーション、分散型ストレージ、分散型通信コンピューティング、ゼロトラスト。低信頼インタラクション プロトコル (ブロックチェーン)

ブロックチェーンの透明なトレーサビリティ、安定通貨と中央銀行デジタル通貨、クリエイターエコノミー、チェーンゲーム。


ブロックチェーンとは何ですか?

ブロックチェーンは、ビットコイントランザクションやその他のデータを安全に保存できる新しいタイプの分散型プロトコルで、情報の偽造や改ざんが不可能で、集中組織による監査なしでスマートコントラクトを自動的に実行できます。トランザクションは、ビットコインなどのデジタル通貨、または債権者の権利、株式、著作権などのデジタル資産にすることができます。ブロックチェーン技術は、ビザンチンの一般的な問題を解決し、実体経済の信託コストと会計コストを大幅に削減し、インターネット時代を再定義します。権利システム。

ブロックチェーン (Blockchain) は、ノードが参加する分散データベース システムであり、その特徴は変更不可能で偽造不可能であり、台帳システムとしても理解できます。これはビットコインの重要な概念であり、完全なビットコインブロックチェーンのコピーであり、そのトークン(トークン)のすべてのトランザクションを記録します。この情報を使用すると、各アドレスがその履歴の任意の時点で持っていた値を知ることができます。

ブロックチェーンは、暗号手法によって生成された一連のデータブロックで構成されており、各ブロックには前のブロックのハッシュ値(ハッシュ)が含まれており、ジェネシスブロックから現在のブロックに接続されてブロックチェーンを形成します。各ブロックは、時系列で前のブロックの後に生成されることが保証されています。そうでない場合、前のブロックのハッシュ値は不明です。これらの特性により、ビットコインの二重支払いが非常に困難になります。ブロックチェーンはビットコインの中核となるイノベーションです。

ブロックチェーン概念の出現は、サトシ ナカモトのビットコイン ホワイト ペーパー [2] で初めて言及されましたが、それはプルーフ オブ ワーク チェーンの形で存在しており、ブロックチェーン概念の説明に関するサトシ ナカモトの意見は次のとおりです。

タイムスタンプ サーバーは、ブロック形式のデータ セットに対してランダム ハッシュを実行することによってタイムスタンプを追加し、ニュースやワールドワイド ニュースグループ ネットワーク (Usenet) の同じ投稿と同様に、ランダム ハッシュをブロードキャストします。明らかに、タイムスタンプは、特定のデータが特定の時刻に存在する必要があることを証明できます。その時刻にデータが存在する場合にのみ、対応するランダムなハッシュ値を取得できるからです。各タイムスタンプは、前のタイムスタンプをランダムなハッシュ値に組み込む必要があり、後続の各タイムスタンプは前のタイムスタンプを強化して、チェーンを形成する必要があります。

ブロックチェーンのアプリケーション: クラウドファンディング、公証人証明書、サプライチェーン、株式証明書など。ブロックチェーンを駆動するために私たちが作成したプログラムは DAPP です。ブロックチェーンはデータベースのようなもので、すべての操作はブロックチェーンに記録され、削除することはできません。

イーサリアム

イーサリアムは、スマート コントラクト機能を備えたオープンソースのパブリック ブロックチェーン プラットフォームであり、ETH と呼ばれる専門的な暗号通貨イーサを通じて、ポイントツーポイント コントラクトを処理するための分散型仮想マシンを提供します。イーサリアム プラットフォームを使用して独自のスマート コントラクトを展開できますが、トランザクションが記録されるたびにアルゴリズムが必要となり、マイナーに一定の料金を支払う必要があります。簡単に理解すると、各トランザクションでアルゴリズムの問​​題が発生します。問題を解決したマイナーは一定の料金またはチップを請求し、取引記録はブロックチェーンに記録されます。

ハッシュアルゴリズム

任意の長さのバイナリ値列を固定長のバイナリ値列にマッピングしますが、このマッピングの規則がハッシュアルゴリズムであり、元のデータをマッピングした後のバイナリ値列がハッシュ値となります。

ハッシュ アルゴリズムを構成する条件:

ハッシュ値から元のデータを逆に推定することはできません (そのため、ハッシュ アルゴリズムは単一項目ハッシュ アルゴリズムとも呼ばれます)。

入力データに非常に敏感で、元のデータが少し変更されたとしても、最終的なハッシュ値は大きく異なります。

ハッシュ衝突の確率は非常に小さい 元データが異なる場合、同じハッシュ値が得られる確率は非常に小さい

Hazhi アルゴリズムの実行効率は可能な限り効率的である必要があり、長いテキストのハッシュ値も迅速に計算できます。


スマートコントラクト

Solidity はバックエンド言語に属する必要があります。これはスマート コントラクト用の高級言語です。イーサリアム仮想マシン (EVM) 上で実行されます。js、c++ などの多くの言語から借用しています。大きな違いがあります。 Web3.0 は分散化を提案しています 平たく言えば、サーバーにデータベースへのデータの保存や読み取りを要求する従来のバックエンドがなくなり、ブロックチェーンに基づいて記録することを意味します発生するすべてのイベントにはデータベース ストレージは必要ありません。

Ethereum の最下層は UTXO ではなくアカウントに基づいているため、ユーザーの検索、契約の検索、および契約コードの検索に使用される特別なアドレス タイプがあります (契約自体もアカウントです)。

言語埋め込みフレームワークは支払いをサポートしているため、支払いを言語レベルで直接サポートできる Payable などのいくつかのキーワードが提供されており、非常にシンプルです。

ストレージはネットワーク上のブロックチェーンを使用しており、データの各状態を永続的に保存できるため、変数がメモリを使用するかブロックチェーンを使用するかを判断する必要があります。

動作環境は分散ネットワーク上にあり、コントラクトまたは関数実行の呼び出し方法が重視されます。単純な関数呼び出しがネットワーク上のノードでのコード実行に変わるため、分散しているように感じられます。

最後の大きな違いは例外メカニズムです。例外が発生すると、すべての実行は取り消されます。これは主に、コントラクト実行のアトミック性を確保し、中間状態でのデータの不整合を回避するためです。

パラグマソリッドティ ^0.4.0

Helloworld と契約{

        単位バランス;

        関数 update(uint amount) は (アドレス,uint){ を返します

                残高+=金額;

                return (メッセージ.送信者,残高)

        }

}

Web3.js

スマート コントラクトを作成して Ethereum にデプロイした後、フロントエンドはリクエストを送信する必要はありませんが、コントラクトと対話するには、Web3.js ライブラリが必要です。

Web3.js は、チェーン上の情報の表示など、イーサリアム エコシステム内の HTTP または IPC を介してローカルまたはリモートのイーサリアム ノードと対話できるようにする多くの機能を備えたライブラリです。

さまざまな高級言語で書かれたプログラムは、Web3 インターフェイスに適応して EVM と対話できます。2 番目のプロセスでは JSON-RPC (ステートレスで軽量なリモート プロシージャ コール (RPC) 送信プロトコル) が使用され、その送信内容は主に JSON を介して行われます)

Web サーバーからのデータの読み取りおよび書き込みに ajax を使用する代わりに、web3.js を使用して Ethereum ブロックチェーンの読み取りおよび書き込みを行うことができます。

const web3 = new Web3(
    web3.givenProvider || "http://localhost:8584"
);
//获取当前节点下的账号信息
const accounts = await web3.eth.requestAccount()//会返回当前的账号
console.log("accounts",accounts)

 DApp

DAppのロジックの一部または全部は分散型ネットワークに格納されており、この分散型ネットワークはブロックチェーン当時はパブリックチェーンと呼ばれていました。スマート コントラクトをフロントエンドに追加して DApp を形成する

メタマスク

MetaMask は、MetaMask Chrome 拡張機能または Firefox アドオンとして利用できるブラウザー アドオンです。その中核はイーサリアム ウォレットとして機能します。これをインストールすると、一意のイーサリアム ウォレット アドレスにアクセスできるようになり、そのアドレスを使用してイーサまたは ERC20 トークンの送受信が開始されます。自分のイーサリアムコインを取引したり閲覧したりできます。

しかし、MetaMask は単なるイーサリアム ウォレットではなく、ブラウザ拡張機能として、現在閲覧している Web ページと対話できます。これは、訪問された各 Web ページに web3.js という名前の JavaScript ライブラリを挿入することによって実装され、注入後、web3 は window.web3 の JS コードを通じて訪問された各ページのオブジェクトを提供します。

おすすめ

転載: blog.csdn.net/m0_59962790/article/details/129877906