Blockchain code Metaverse VR

SmartContract×VR×Crypto(593)

スポンサーリンク

//tips
7月嶋津さん合宿爆誕なるか。

ジャックドーシーのweb5構想。個人情報の分散化(暗号化)は、集権化組織よりどれほど安全になるのかに注目。一時期、チェーン上での個人信用スコアを作りたくDIDについて調べていたので、うまくいったらいいなと思う。最終的にはオラクルとの接続や管理の問題に行き着いたかと思うので、そこがどう扱われるのかが気になるところ。オラクルの役割を内包するということなのだろうか。

https://docs.google.com/presentation/d/1SaHGyY9TjPg4a0VNLCsfchoVG1yU3ffTDsPRcU99H1E/preview?pru=AAABgXZOy7s*0hI5PK8uoB_CS0HyTxNEWQ&slide=id.g11d24dbeb84_0_0

https://developer.tbd.website/projects/web5/

//smart contract

色々なハッキング被害がでているので防衛策と危ないポイントを確認しておく。

Deploy済みのPudgyPenguinsをお手本にしつつ、他のポイントをチェックしていく。
https://etherscan.io/address/0xbd3531da5cf5857e7cfaa92426877b022e612cf8#code

・selfdestruct(address) functionによる攻撃

https://hackernoon.com/how-to-hack-smart-contracts-self-destruct-and-solidity

an attacker can create a contract with a selfdestruct() function, send ether to it, call selfdestruct(target) and force ether to be sent to a target.

The selfdestruct(address) function removes all bytecode from the contract address and sends all ether stored to the specified address.

先にコントラクトにselfdestructを仕込んでおくと全てのbytecodeを消去して、コントラクト内のethを特定のアドレスに移せるよう。

NFTを購入する際にはcodeのなかにこれがないかは確認しておく。

Bytecodeをなぜ削除する必要があるのかわからなかったので確認。

When we compile the solidity code using the solc compiler, it will translate our code into bytecode, something only the EVM can understand.

EVMは記述されたスマートコントラクトをブロックチェーン上で動かすものと理解している。

Bytecodeは元のコードを16進数で暗号化し、数字に置き換えたものなのでコントラクトのコードを削除するものなののよう。

ちなみにアカウントやtxの“0x”は16進数(hexadecimals)だよという目印。

https://medium.com/@blockchain101/solidity-bytecode-and-opcode-basics-672e9b1a88c2

コンパイルの際にbytecodeと一緒に聞くABIはContract bytecodeとやり取りを行うインターフェースとのこと。

ABI is an interface to interact with EVM bytecode.

if you want to call a function in a smart contract with your JavaScript code, ABI plays a role as an intermediary between your JavaScript code and EVM bytecode to interact with each other.

https://medium.com/@eiki1212/explaining-ethereum-contract-abi-evm-bytecode-6afa6e917c3b

ここからEVMはブロックチェーンとユーザーの間に立ち、コードと機械語のやり取りを、

関数名と返り値のデータ型をJSON formatで表すルール役であるABIと

Bytecodeという16進数の値でやりとりしていることがわかる。

EVMのおかげで特殊なパソコンでなくともスマートコントラクトのやり取りができる。

In Ethereum, Contract ABI is an interface that defines a standard scheme of how to call functions in a smart contract and get data back. Contract ABI is designed for external use to enables application-to-contract and contract-to-contract interaction. For example, if you want to call a smart contract function from your dApp, you call via Contract ABI.

Bytecodeについてはわかった。

selfdestruct(address) functionについての備えを確認。

気になるのはdeploy後のインスタンスに対しての追加設定について。

contract Attack {
EtherGame etherGame;

constructor(EtherGame _etherGame) {
etherGame = EtherGame(_etherGame);
}

function attack() public payable {

address payable addr = payable(address(etherGame));
selfdestruct(addr);
}
}

後からコントラクトの中身に変更はできないと理解しているがインスタンスに対して何かの追加設定を行うことでコントラクトに干渉できるのか。

Ethereum最凶の脆弱性をコントラクト実行の仕組みから読み解く&検査ツール紹介

送金、コントラクトの実行・生成は同じ流れで行えるので、dataにコードさえ埋め込めれば、トランザクションの送付先でコード内容が実行できる。

ここのセキュリティ検査ツールは一通り使えるようになっておいた方が良さそう。

selfdestructを入れざるを得ないわけがあるのではと探ってみると、コントラクトを無効化したい時に使われるとのこと、ただ悪用されるので、代わりに全てのfunctionを元に戻させる内部の状態を変更することでコントラクトを無効化するのがセオリーのよう。

コントラクトを無効化したい時とは、外部からのハッキングで内部バランスの流出が止まらない場合などのことを指し、攻撃者からの不正な引出しをされる前にetherを回収できるようにしておくこと役割を持つselfdestructは最終防衛策という位置付け。これが逆に悪用されてしまうのだから難しいところでもある。

基本的には不特定のアドレスからコントラクトを破棄されては困るので、onlyOwnerを付加して、コントラクトのオーナーからのみ実行できるようにアクセス制限をかける。

https://solidity-jp.readthedocs.io/ja/latest/introduction-to-smart-contracts.html

https://betterprogramming.pub/solidity-what-happens-with-selfdestruct-f337fcaa58a7

https://medium.com/loom-network-japanese/%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%83%88%E3%83%A9%E3%82%AF%E3%83%88%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3-part-2-6ef700df00af

fallback関数の説明。

【Solidity基礎】fallback関数について

https://qiita.com/k-keisuke/items/cd2744c7ba085beff16b

Onlyowenerとしなかった理由があったのか。わからぬ。

また、selfdestructが、もし受け取りアドレスがコントラクトであった場合、fallback関数は実行されなくなるため制約条件が飛ばして実行される可能性があるとのこと。これも実行主を制限すれば良さそう。

逆にオーナーアカウントが乗っ取られた場合が厄介か。

意図的に希少なNFTを入手できるようにコントラクト経由で操作可能。あまり希少性組込みには興味ないのでここはスルーで良いか。

https://inspexco.medium.com/how-hackers-can-become-lucky-in-nft-minting-822f48d4b917

https://zenn.dev/razokulover/scraps/cf211e2b8ff9d5

Slitherでの検証を行う方法を模索。

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2022 All Rights Reserved Powered by AFFINGER5.