クリプトゾンビ

クリプトゾンビLesson 4 Chapter1 Payable関数

投稿日:

Lesson 4 Chapter1 Payable関数

関数修飾詞の種類

可視性修飾詞

private修飾詞 コントラクト内の別の関数からのみ呼び出される。
internal修飾詞 private修飾詞+そのコントラクトを継承したコントラクトからも呼び出す事ができる。
external修飾詞 コントラクト外からだけ呼び出す事ができる。
public修飾詞 コントラクト内部・外部どちらからでも呼び出せる。

可視性修飾子

状態修飾詞

関数がブロックチェーンとどのように作用し合うのか示す。

view修飾詞 関数が動作しても、ブロックチェーンになんのデータも保存または変更しない。
pure修飾詞 関数がブロックチェーンにデータを保存しないだけでなく、ブロックチェーンからデータを読み込むこともない。

カスタム修飾子modifier

onlyOwnerなど修飾詞の関数への影響の仕方を決定するための、カスタムした理論を定義することが可能。

例 引数を持つ場合
modifier olderThan(uint _age, uint _userId) {
require (age[_userId] >= _age);
_;
}

payable修飾詞

イーサリアムでは、お金(Ether)もデータ(トランザクションの内容)も、コントラクト・コード自体も全てイーサリアム上にある。
ファンクション・コール及びお金の支払いが同時に可能。
関数を実行するため、コントラクトへいくらかの支払いを要求するというようなすごく面白いこともできてしまう

contract OnlineStore {
function buySomething() external payable {
// Check to make sure 0.001 ether was sent to the function call:
require(msg.value == 0.001 ether);
// If so, some logic to transfer the digital item to the caller of the function:
transferThing(msg.sender);
}
}
msg.value:コントラクトにどのくらいEtherが送られたかを見るやり方で、etherは組み込み単位。

web3.js(DAppのJavaScriptフロントエンド)から以下のように関数を呼び出す。

// Assuming `OnlineStore` points to your contract on Ethereum:

OnlineStore.buySomething(
{from: web3.eth.defaultAccount, value: web3.utils.toWei(0.001)}
)

payrable

valueの部分はJavaScriptのファンクション・コールでetherをどのくらい送るかを定めている(0.001ether)。
もしトランザクションを封筒のようなものと考えると、封筒の中に現金を入れるようなものだ。受取人に手紙とお金が一緒に届けられる。
注:関数にpayable修飾詞がなく、Etherを上記のように送ろうとする場合、その関数はトランザクションを拒否します。
msg.sender
コントラクトを呼び出した一番最初のアドレスを返す
msg.value
送金した金額
address.transfer(送金額)
addressのアカウントに、コントラクトがweiで送金する。失敗したらフェイルバックする。
address.send(送金額)
addressのアカウントに、コントラクトがweiで送金する。
address.balance
weiで残高を返す
ユーザーがETHを支払って自分のゾンビをレベルアップできる機能
送金によって関数が呼び出された際に、msg.valueによってその送金額(単位はwei)を取得できます。
uint levelUpFee = 0.001 ether;
function levelUp(uint _zombieId) external payable {
require(msg.value == levelUpFee);
zombies[_zombieId].level++;
}

prev

ogp
クリプトゾンビLesson 3 Chapter12 For ループ

Lesson 3 Chapter12 For ループ Array vs Mapping 使用目的は両者とも配列、もしくは Key Value な形で "情報を格納する" ということなので、似ていますが ...

続きを見る

next

ogp
クリプトゾンビLesson 4 Chapter2 Withdraw関数

Lesson 4 Chapter2 Withdraw関数 コントラクトに送られたEthは、コントラクトのイーサリアム・アカウントに貯められる。 コントラクトからEtherを引き出す関数を追加しない限り ...

続きを見る

ビットコインってなに?

2008年11月、metzdowd.comにナカモトサトシにより投稿された論文Bitcoin:A Peer-to-Peer Electronic Cash Systemで定義された仕様とをもとにビットコイン・コミュニティーで開発が続けられる製造と取引に暗号学を使った通貨のことです。

ビットコイン自体は、フリー・ソフトウエアで、ソフトウェア開発のプラットフォームGitHubに登録すれば、ソースやドキュメント閲覧が可能で、開発に参加も可能です。

ナカモトサトシは、2010年12月まで開発に携わっていましたが、その後姿を消しました。日本名ですが、国籍も含め匿名性が高く身元も不明です。

真偽のほどは、不明ですがSBI社長の北尾氏が、2018年3月期第2四半期 SBIホールディングス(株)決算説明会動画の1:29:20頃)でナカモトサトシと議論を交わしたと発言して話題になりました。

ビットコインの仕組み

ビットコインは、P2P型の公開型分散台帳技術(DLT)によって信頼性を担保され運用されるブロックチェーンで結合された暗号通貨(cryptocurrency)のことです。

ビットコインは、P2Pネットワーク上のサーバー上で同一取引情報を持ちコントロールすることで取引の妥当性のチェックが行われるため、銀行など、特定の管理者がいない非中央集権型の仮想通貨と呼ばれています。

ブロックチェーン


GitHub

ブロックチェーンの動き

マイニング

ビットコインは送信アドレス(Tx)に対するデジタル署名によって保護されており、一定時間(10分)ごとに、すべての取引記録を分散台帳に追加します。

その追加処理には、ネットワーク上の分散取引台帳データと、10分間に発生したすべての取引のデータの整合性を取りながら正確に記録することが必要です。

整合性を取る作業は、膨大な計算量が必要となるため専用のハードウエアの計算能力を使って、誰でもが取引を処理することができます。

この手伝いをしてくれた人(膨大な計算処理を行った人)の中で、結果として追記処理を成功させた人には、その見返りとしてビットコインが支払われます。

この作業をマイニングと呼びます。

マイニングには、ソロマイニングとプールマイニングがあり、個人のPCでも余った演算能力でプールマイニングに参加できます。

ブロックチェーンをより深く理解する

全画面にして字幕設定を自動翻訳 イタリア語=>自動翻訳を経由して日本語に設定するとよくわかります。

上記デモは、下記リンク先サイトを使用しているので、自分でも試すことができます。

 

ジェネシス・マイニングでのハッシュパワー購入

ジェネシス・マイニングは世界最大の高く信頼されたビットコイン クラウド マイニングのプロバイダーです。ハッシュパワー購入時に,コード(kjx2uz)を使用した人は、購入時に3%の割引になります。

ブロックチェーンエクスプローラー

ブロックチェーンアドレスを入力することで、送金状況(confirmation回数の確認)が行えます。

イーサリウムの仕組み

-クリプトゾンビ

Copyright© 仮想通貨アンテナ , 2021 All Rights Reserved.