あなたの最初のスマート契約をコード化する方法
9282 ワード
導入
私はそれを得る、あなたはweb 3から多くのバイブスを聞いた.0世界は、誰もがそれについて話している.あなたの友人は、この技術を学んで計画しているし、どのようにそれについて行くかわからない.あなたはどのように始めるかを見るためにオンラインになりました、そして、YouTubeのすべての人々はこの話題についてあまりにも技術的です.あなたはただ何か簡単にあなたと一緒に得ることができます.閉じるこの動画はお気に入りから削除されています.このチュートリアルとその後のもので、私はWEB 3の世界を通してあなたを旅行しています.0 Solutileであなたの最初のスマート契約を構築する方法から始まる0開発.
スマート契約が学ぶのが難しい理由
あなたがスペースに新しいならば、スマート契約のテクノロジーを学ぶことはイライラすることがありえます.も経験豊かな開発者はどのように彼または彼女はスマート契約の開発の複雑さにガタガタすることができます驚かれることができます.次の理由は、スマート契約の開発に挑戦することができます.
それには、新しいプログラミング用語がたくさんある
このスペースの初心者によってしばしば直面する最初の打撃の1つは、彼らがテクノロジーで生産的であるために理解する必要がある語のカタログです.ブロックチェーンから、スマート契約が基づいている基盤技術.初心者にそれを説明する圧倒的に混乱することができます.
それについて考えると、どのようなブロックチェーン、粘り強さ、スマート契約を理解する必要があります.どのようなガス料金は、ブロック、immutability、Ethereum仮想マシンなどです.
それに直面しましょう、ブロックの開発のLinguaフランカは広大で、より多くの言葉は、宇宙の指数関数的な進歩のために毎日ポップアップされています.
不十分な教材
無料またはプレミアムかどうか、この技術の需要の増加を相殺するために必要な材料の量が不足している.
プロのブロックチェーン開発者にあなたを成長させるこのスペースの自由な材料は、制限されます.はい、それはこれらの人々がこれらの学習コンテンツを生産するために右からそれをいくつかのお金を稼ぐことです.それはあなたが役立つことができるかなりの数の専門コースをオンラインで表示されます理由です.
また、無料の材料の車線にブロックチェーンとスマート契約の開発を学ぶために行く場合は、スペースで快適なスポットを見つけるために木の伐採の多くを行う必要があります.
ブロック連鎖解に関する質量懐疑論
このブロックチェーン技術についての疑惑と懐疑論の厚い雲があります.最近、非常に多くの注目を集めていますが、世界中の人々や国の考え方もこの技術の完全な受け入れを制限しています.
しかし、私たちは世界を非難することはできません.
スマート契約とは
単に状態にするには、スマート契約は、ブロックチェーン上で実行されるプログラムの一部です.この類推を使いましょう、ブロックは海として見られます、そして、スマート契約は魚のようです.スマート契約は、今のところ、Ethereum仮想マシン(EVM)などのブロックチェーンネットワークでのみ実行できます.スマート契約はネットワークに配備されない限り役に立たない.
スマート契約
直感的にその名前として、スマート契約は、2つ以上の当事者間の実際の契約書のように動作します.スマート契約は、それがどうするか、どのようにそれを行うかに関する仕様を持っています.
スマート契約には、ブロックチェーンプログラミング言語で書かれたコードが含まれています.
一旦スマート契約が書かれるか、コード化されるならば、ガス料金と呼ばれている少しのお金はネットワークに契約を置くために必要です.Blockchainネットワークで起こるあらゆるトランザクションは、そのようなトランザクションが起こったことを証明するために検証メカニズムを必要とします.ブロックチェーンでは、検証メカニズムはコンセンサスモデルと呼ばれるものです.
これらのモデルの一握りは、仕事の証明と株式の証明のようなものであり、それぞれのコンセンサスモデルは、そのようなブロックのスケーラビリティ、セキュリティ、および速度に影響を与えます.
私たちは多くの技術に行きたくありません、この話題のためにシンプルを保持しましょう.
どのようなスマート契約を行うことができます
スマート契約の統合をサポートするブロックチェーンは、金鉱です.スマート契約は、ゲームを変更し、永遠にブロックチェーンで実行されるプログラムを書くことができます.ブロックチェーンの世界ではスマート契約の多くのユースケースがあります.
スマート契約例の使用
さて、このチュートリアルの肉に乗りましょう、我々は、撤回メカニズムとともに人々から寄付を受け入れる単純なものを構築します.ここではスマート契約のフルバージョンです.
//SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
contract Donors {
mapping (address => uint256) public paymentsOf;
mapping (address => uint256) public donationsBy;
address payable public owner;
uint256 public balance;
uint256 public withdrawn;
uint256 public totalDonations = 0;
uint256 public totalWithdrawal = 0;
event Donation(
uint256 id,
address indexed to,
address indexed from,
uint256 amount,
uint256 timestamp
);
event Withdrawal(
uint256 id,
address indexed to,
address indexed from,
uint256 amount,
uint256 timestamp
);
constructor() {
owner = payable(msg.sender);
}
function donate() payable public {
require(msg.value > 0, "Donation cannot be zero!");
paymentsOf[msg.sender] += msg.value;
donationsBy[msg.sender] += 1;
balance += msg.value;
totalDonations++;
emit Donation(
totalDonations,
address(this),
msg.sender,
msg.value,
block.timestamp
);
}
function withdraw(uint256 amount) external returns (bool) {
require(msg.sender == owner, "Unauthorized!");
require(balance >= amount, "Insufficient balance");
balance -= amount;
withdrawn += amount;
owner.transfer(amount);
totalWithdrawal++;
emit Withdrawal(
totalWithdrawal,
msg.sender,
address(this),
amount,
block.timestamp
);
return true;
}
}
さて、このスマート契約で何が起こっているのか説明しましょう.//SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
最上位では、我々のスマート識別子に使用できるライセンス識別子とコンパイラバージョンの範囲を指定するコードのコードがあります.License Identifierは、スマートコントラクトソースコードがオープンソースかどうか、および使用できる範囲を教えます.すべてのlicenses available for use hereを見つけることができます.
contract Donors {
// codes goes here...
}
上記のコードブロックは、スマート契約の構造を定義します.あなたが少しのオブジェクト指向プログラミングをしたならば、それはスマート契約開発で類似したパターンを認めるために、あなたを長くしません.これは、Solilityプログラミング言語がJavaScript、C++とPythonのような一般的なプログラミング言語から多くの構文を借りたからです.// Key value store
mapping (address => uint256) public paymentsOf;
mapping (address => uint256) public donationsBy;
これは、関連付けられた値でキーを表すSolutionProgramming言語の変数型です.これは、PHPの連想配列やJavaScriptのオブジェクトにほぼ似ています.上記のコードでは、単に私たちのスマート契約を寄付する金額とすべてのアドレスを関連付けるように指示されます.
// Declaring smart contract variables
address payable public owner;
uint256 public balance;
uint256 public withdrawn;
uint256 public totalDonations = 0;
uint256 public totalWithdrawal = 0;
上記のコードスニペットは、スマート契約の過程で使用される変数を宣言します.アドレスは、人またはスマート契約自体の財布のアドレスを保持するデータ型です.UINT 256は単に符号なし、正、または非負の整数、すなわち0から2⁵⁶–1 .
支払いは、この口座またはアドレスがお金を受け取ることができることを意味します.
一般的に、この変数はこのスマート契約の外側でアクセスできることを意味します.
// Log information
event Donation(
uint256 id,
address indexed to,
address indexed from,
uint256 amount,
uint256 timestamp
);
event Withdrawal(
uint256 id,
address indexed to,
address indexed from,
uint256 amount,
uint256 timestamp
);
イベントは何ですか.イベントは、特定のトランザクションに関するデータをログ出力したり、データを生成したり、スマート契約のアドレスとUNIXでブロックチェーンに格納されたりする、Solility Programming Languageで構築されます.上のコードブロックでは、それぞれの寄付や撤回、退会または寄付の数、量、タイムスタンプなどの情報を取得し、将来の参照のためにEVM(Ethereum Virtual Machine)にログオンします.
constructor() {
owner = payable(msg.sender);
}
このスマートコントラクトがインスタンス化または展開されると、これは最初に実行される機能です.この例では、プロジェクターはスマート契約の所有者、またはスマート契約の展開に使用される少なくともアカウントになります.function donate() payable public {
require(msg.value > 0, "Donation cannot be zero!");
// Assigning payment records...
paymentsOf[msg.sender] += msg.value;
donationsBy[msg.sender] += 1;
balance += msg.value;
totalDonations++;
emit Donation(
totalDonations,
address(this),
msg.sender,
msg.value,
block.timestamp
);
}
上記の機能は支払い可能で公共の意味であり、それはお金を受け取ることができ、寄付者に公的にアクセスできる.必要なチェックは、人々がお金を送っていることを確認するために必要です.ゼロのエーテルを送ることは例外に終わります、そして、トランザクションは戻ります.
寄付関数がお金の存在を確認すると、次に、それは宣言された変数にいくらかの支払い記録を割り当てます.そこから私たちは誰が私たちにお金を寄付したのアカウントを保つことができる、どのくらい、この人は私たちにお金を寄付した回数、および撤退の利用可能なバランス.
寄付イベントは、機能がその任務を終える前に、最後に放出されます.
function withdraw(uint256 amount) external returns (bool) {
require(msg.sender == owner, "Unauthorized!");
require(balance >= amount, "Insufficient balance");
// Assigning payment records...
balance -= amount;
withdrawn += amount;
owner.transfer(amount);
totalWithdrawal++;
emit Withdrawal(
totalWithdrawal,
msg.sender,
address(this),
amount,
block.timestamp
);
return true;
}
この機能は、スマート契約の所有者または配備者に規定金額を支払う責任があります.私たちは、所有者がお金を引退している人であると確認するためにいくつかのチェックを加えました.また、撤回すべき金額が利用可能残高以上であることを確認した.
最後に、関数が完了する前に寄付イベントが実行されます.
次に、the Remix editorに飛び込んで、下記のイメージで見られるように、スマート契約を走らせることができます.
おめでとう、あなたはちょうど粘り強さであなたの最初のスマート契約を粉砕しました.
結論
それはあなたの最初のスマート契約のコードをどのようにうまくいけば、うまくいけば、スマート契約書を書く方法のいくつかの理解を得ていることを示して楽しいです.
あなたが私と一緒の若干の個人的なチュートリアル時間が欲しいならば、親切にcheck out my website for all the details .
私に従って、このチュートリアルに拍手を与えることを忘れないでください、次のいずれかを参照してください.
著者について
ゴスペル・ダーリントン・キックは2016年にソフトウェアエンジニアとしての旅を始めた.長年にわたって、彼はJavaScriptのスタックで本格的なスキルを成長している反応、Reactnative、Vuejs、今のブロックチェーン.
彼は現在、クライアントのためのアプリケーションを構築するフリーランス、および技術的なチュートリアルを書く方法を彼は何を行うには他の人を教える.
ゴスペルダーリントンは開いており、あなたから聞いてご利用いただけます.あなたは彼にFacebook、Github、または彼のwebsiteに達することができます.
Reference
この問題について(あなたの最初のスマート契約をコード化する方法), 我々は、より多くの情報をここで見つけました https://dev.to/daltonic/how-to-code-your-first-smart-contract-with-solidity-52ihテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol