チェーン内のコンポーネント

2948 ワード

チェーン内のコンポーネント


チェーンでは、ステータス、ステータスは、別々のnonce、balance、code、storageなどの属性を持つ勘定科目で構成され、勘定科目は、チェーン外で作成可能な外部所有勘定科目EOAと、チェーン内でしか生成できないCAに大別される.
Txはイーサネットで状態を変えることができ、Txは
  • イーサ送信
  • S.C配備
  • S.Cを運転する
  • の機能でアカウントを変更し、ステータスを変更します.
    そのため、秘密鍵に署名し、追加料金(ガス料金)を徴収する必要があります.
    この2つのプロセスにより,Txの[生成→署名→転送]プロセスが経験される.

  • Tx {
    受信者
    署名:送信者の署名を確認できます
    Value:送信されたイーサ
    Gas:費用
    データ:S.Cメッセージを含むことができるデータは以下のとおりである.
    }
  • これらのコンポーネントが満たされ、鍵によって署名および送信される場合、ノードは受信した情報をTx Poolに配置し、周辺ノード間で検証情報を交換する.この過程で,採掘者たちが採掘過程の問題を解決すれば,(nonce)ノードから得られた検証済みTx poolがチェーンにアップロードされ,アップロードされた瞬間に伝送結果が確定し,ユーザの観点から伝送が完了していることが分かる.
    個人がGethを介してテストネットワーク上にアカウントを作成し、アカウント間の送金コマンドを実行しても、財布の履歴を表示すると、送金がない理由が判明するのは、さらなるマイニングによってデータブロックが生成されていないためです.ブロックは作成されていないのでpending状態ではtxpoolにのみ含まれるので、ブロック作成と定義が完了してから確認すると送金が正しいか確認できます.
    送金は、ブロックを生成し、txを完全にチェーンに上昇させることによってのみ正常に行われる.
    Ethernetディスカッション(デュアル決済の問題)
    Trxを構成するフィールドnonceにより二重支払い問題を解決する.完了した取引はすべて使い捨てで、各Trexには指定された番号があり、nonceというフィールドは最初の0から1に増加し、固有値を持つようにTrexで生成されます.ビットコインの場合、UTXOによって単一のUTXOを識別することによって重複支払問題を回避し、イーサネットの場合、Account法によって、上記Trx固有のユニークなnonceによって重複支払問題を解決する.

    ブロックヘッダ部の構成



    -ヘッダに含まれる情報は、nons値ではなく、一定範囲のnons値を求めるため、最も速く得られるnons値は、新しいブロックのnons値として決定される.
    (上記のTrx nonceとは異なり、用語区分に注意!
    秘密鍵、公開鍵を使用して秘密メッセージを暗号化復号するプロセス

    私は相手の公開鍵で暗号化して送信することができて、このように暗号化した情報は相手の秘密鍵でしか復号できないので、秘密にすることができます.

    契約の配布


    Accountのnonce、balance、code、storageフィールドのコードセクションの構成に従って、storageの値が変更されます.コードが導入されると、チェーン上のアクセス可能なすべての人に公開され、変更できない状態になります.変更後のコードを再配置してからのみ変更できます.
    再結合
    Remix IDEにより、見積書の作成、導入、および使用が容易になります.
    使用方法
  • テストフォルダにsolファイル
  • を作成する
  • Deploy&run Transactionメニューに移動し、Metamaskと合わせて
  • を使用します.
  • 環境を注入型web 3に設定
  • 関数
  • を作成
    contract FirstContract {
    string name = "vitalik";
    function getName() public view returns (string memory){
        return name;
    }
    
    function setName(string memory _name) public {
        name = _name;
    }
    uint age = 19;
    function getAge() public view returns (uint ){
        return age;
    }
    function setAge(uint _age) public {
        age = _age;
    }
    }
    
    関数を作成したら、「deploy」をクリックしてウィンドウを開き、名前「vitalik」をstorageに含め、署名してブロックを作成すると、accountのstorageに追加した内容が含まれていることがわかります.getNameの関数では、読み取り関数(ビュー)を使用して署名する必要はなく、コンテンツを含める必要があります.次に2番目の関数setNameを呼び出すと、以前に含まれていたnameの値が新しい値に置き換えられる新しいnameの値を指定できます.10回の名前を変更したと仮定すると、1~9回の名前はcontractになく、最後の値のみが記録されます.1-9番の名前を知りたい場合は,Etherscanトランザクションでアクセスでき,個別トランザクションにより設定したname値を決定できます.storageセクションは複数のコンテンツを格納するために使用されず、ストレージコストが最も高いため、情報が他の場所でクエリーできる場合は、コンテンツをできるだけ少なく格納することが重要です.