Solidityとスマートコントラクト入門:Coinコントラクトの作成
こんにちは!今日はJavaScriptの知識があるが、Solidityやスマートコントラクトについて詳しくないエンジニアのためのガイドを提供します。今回は、EthereumのオンラインIDEであるRemixを使用します。
1. コードの説明
まずは、以下のSolidityコードを見てみましょう。
pragma solidity ^0.8.4;
contract Coin {
address public minter;
mapping (address => uint) public balances;
event Sent(address from, address to, uint amount);
constructor() {
minter = msg.sender;
}
function mint(address receiver, uint amount) public {
require(msg.sender == minter);
balances[receiver] += amount;
}
error InsufficientBalance(uint requested, uint available);
function send(address receiver, uint amount) public {
if (amount > balances[msg.sender])
revert InsufficientBalance({
requested: amount,
available: balances[msg.sender]
});
balances[msg.sender] -= amount;
balances[receiver] += amount;
emit Sent(msg.sender, receiver, amount);
}
}
このコードはCoin
というスマートコントラクトを作成します。このコントラクトは以下の機能を持ちます:
-
minter
:コインを発行するアドレスを保持します。コンストラクタでこの変数はmsg.sender
(コントラクトをデプロイしたアドレス)に設定されます。 -
balances
:各アドレスのコインのバランスを保持するマッピングです。 -
Sent
:コインが送信されたときに実行されるイベントです。 -
mint
:指定されたアドレスに指定された量のコインを発行する関数です。この関数はminter
からのみ呼び出すことができます。 -
send
:指定されたアドレスに指定された量のコインを送信する関数です。この関数は送信者が十分なバランスを持っている場合にのみ呼び出すことができます。
2. Remix IDEでのコンパイルとデプロイ
次に、Remix IDEでこのコードをコンパイルとデプロイする方法を見てみましょう。手順は先ほどのガイドと同様です。
3. コントラクトとのやり取り
デプロイしたCoin
コントラクトはmint
とsend
関数を通じて操作できます。mint
関数はコインを発行し、send
関数はコインを送信します。
それでは、Happy coding!