//tips
//smart contract
イーサリアムのチェーンを説明しなければならないので要点をまとめていく。
最初はブロックチェーンの説明から初めて、そこにイーサリアムの話も載せるイメージでいくか。
・ブロックチェーンは、ノードと呼ばれるブロックチェーン用のプログラムを組み込んだパソコンが同じ情報を共有することで成り立つ情報保存庫(ロゼッタストーンが連なったものと考えるとわかりやすい)
ノードはプログラムを入れるだけなので誰にでもなれる。
・この特殊なパソコン同士がつながってできるので、個人間での情報の共有・アップデートがなされる。どこかの会社が管理しているわけではないので、一つのパソコンがハッキングされ、ダウンしても、他のパソコンがネットワークを維持してくれる。
・ブロックチェーンは名の通り、ブロックが連綿と続いたものだが、確定していない最新ブロックと確定済みの過去のブロックは分けて考える必要がある。
・最新のブロックでは、その中身を決める競争が行われ、それに無事に勝つと確定ずみのブロックとなり、次のブロックの競争に移る。これが延々と繰り返されている。
・このブロックの中身にはトランザクションという形でAさんがBさんに○BTC渡したなどの情報が記載される
・イーサリアムではこの記載される中身をプログラムにすることを可能にした。これがスマートコントラクト。例えば、今まで、お金しか渡せなかったが、Tokenの形で画像情報、json情報も送れるようになった。さらに、応用し、スマートキーのような使い方や金融商品化も考えられるようになった。
ブロックチェーンの問題点は、
・ブロックチェーン上では全ての情報がオープン(個人情報問題)
・一度公開したコントラクトを修正することができない
・即時決済に難あり(現在技術的に解決を試みている)
・変動価格への対応が難しい(Oracle問題)
rinkeby faucetが止まっているようなので0.1test ethを少しずつchainlinkからもらっている。一度にもらえる方法が欲しいところ。
https://faucets.chain.link/rinkeby
また、PudgyPenguinsのOwnable.solを見直し。例え自身のdeploy済みのコントラクトを継承したコントラクトで攻撃を仕掛けようとしてもNakiCollectibleにはprivateまたはpublic onlyOwnerのものしかないのでコントラクトの関数の実行は阻むことができそう。
コントラクト攻撃手法のカラクリがいまいちわからず、まごついている。
解説記事を見ながら、少しづつ理解。
https://qiita.com/k-keisuke/items/250cac7d4da35536252f
結局tx.originを使うことで間に入るDefiコントラクトを隠れ蓑にして油断させて、コントラクトではなく、自身のユーザアドレスにお金を誘導する作戦のよう。
いずれにせよattackコントラクトがどう作用しているかの理解は必要。自分でも書けるようになって損はない。