Blockchain code Metaverse VR

SmartContract×VR×Crypto(618)

スポンサーリンク

//tips

//smart contract

echidnaでコントラクトtestをすべく。
設定方法を模索する。

https://github.com/crytic/echidna

Using Echidna to test a smart contract library

Githubから直接ダウンロードする方法で試してみるか。

./echidna-test <src pass>

で検証が始められるよう。

Githubの使用方法を見ながら試していく。

https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial

早速docker pull trailofbits/eth-security-toolboxを実行。

zsh: command not found: dockerが表示される。

Node.jsの中にdockerを入れるのではなく、dockerの中にnode.jsを入れなければいけないのでMacにdockerをインストールするところから開始。

Dockerの初期設定から始める。

Developers

その上でコマンド。
docker
docker pull trailofbits/eth-security-toolbox

今度はきちんと通った。これはvscodeのターミナルではなく、別のターミナルで実行している。多少の時間がかかる。

docker run hello-worldもきちんと表示された。

そこから下記を実行。
docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox

どこかで使い方を習得した方がよさそう。
/Users/a/aft-demo
echidna-test /Users/a/nft-demo/ArtCollectible.sol

ターミナルを使いやすくしたiterm2からダウンロード。さらにvscodeにdocker拡張機能をインストール。

docker run hello-worldをみながら何が起こっているのかを理解する。

これはhello-worldというコンテナ実行環境のセットを実行していることになる。

dockerのベースにはOSとアプリがあり、それをセットにし、実行可能なパッケージにしたのがコンテナと考えるとわかりやすそう。

docker runはクライアントからの実行命令で、これによりバックグラウンドで動作し続けるデーモンという形でdockerのホスト内に生成され、このデーモンがコンテナの保存庫であるレジストリから、必要な情報を引っ張ってくる。この際に取得される情報はOSとアプリというコンテナ作成のベース情報で、それをもとにデーモンがコンテナを生成し、コンテナ内容を実行する。

なので、dockerのレジストリに蓄えられる情報はコンテナを生成するための大元のOS+アプリの情報になることがわかる。

つまり、最初にOSとアプリ情報をdockerに渡しておかなければコンテナ生成および実行はできないことがわかる。

Dockerでアプリを作成し、実行する段階に移る。この際に、アプリケーションコードとdockerfileの作成登録が必要。これがコンテナの雛形になる。

下記によりコンテナの雛形imageと呼ばれるものを作成する。
docker image build 名前

この後にdocker image ls を押すことできちんと作成できているかを確認できる。

このimageをコンテナ化していく。
docker container run イメージ名など

docker container logs コンテナ名でログが確認できる。

これらを踏まえてどのように既存のコントラクトをチェックするコンテナ部分のみを走らせることができるのかを解明する。

docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox

ここまでは良いのだが、コマンドでlsをすると
building-secure-contracts etheno-examples not-so-smart-contracts rattle

が表示される。

cd /home/training

を実行することでついに自分のドキュメントに入れた。

cd nft-demo
cd contracts
echidna-test ArtCollectible.sol

この結果echidna-test: Couldn't compile given fileというエラーが発生。importが対応していないのか。

ERROR:CryticCompile:Invalid solc compilation Error: Source "@openzeppelin/contracts/token/ERC721/ERC721.sol" not found: File not found.
--> ArtCollectible.sol:4:1:

下記のコミュニティでのエラーケース集を確認していく。
solc-select use 0.5.11に合わせて指定をする必要があったのだろうかと調べていくとそうではなさそう。

そもそもimportは認識できないよう。コントラクトだけ分離して確認すべきか。ただ、継承の関係もあるどうするか。

https://github.com/crytic/crytic-compile/issues/150

下記関連エラー。

https://github.com/crytic/echidna/issues/311

https://bytemeta.vip/repo/crytic/echidna/issues/724

https://githubhot.com/repo/crytic/echidna/issues/642

参考使用ケース:
https://ventral.digital/posts/2021/12/21/fuzzing-complex-projects-with-echidna-sushi-bentobox

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

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

3

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

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

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