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

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

2

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

3

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

4

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

5

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

-Blockchain, code, Metaverse, VR
-, ,

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