Solidity
Hardhatでテストを書くときに、fixtureというのがあります。 テストを実行すると、各テスト項目ごとに、コントラクトのデプロイなど同じ処理を繰り返し行う必要があります。 fixtureを使うと、時間のかかる処理をした後にスナップショットをとって、2回目以…
コード解説 OnChainSlimeのコード解説(1) の続きです。 コードはこちら → PolygonScan
おひさしぶりです。 しばらく忙しくてブログさぼってましたが、そろそろ再開したいと思います。 さて、今日はOnChainSlimeという新作NFTの紹介とコード解説です。
struct(構造体)の初期化でちょっとハマったのでメモ。 (Solidity 0.8.10でテストしています。) Solidity documentation - Types - Structs
遅くなってしまいましたが、ちょっと前に作ったShieldBitmapNFTの紹介とコード解説です。 ShieldBitmapNFTの紹介 NFT第5弾になります。Bitmapライブラリ(@h2uenoさん作)を使ってジェネラティブNFT作ってみました。 フルオンチェーン Polygonメインネット ガ…
Solidityの型変換(キャスト)は少しややこしいので、整理してみました。 uintとint bytesとstring 小さな型/大きな型への変換 intの場合 bytesNとbytes
「100時間後に死ぬNFT」のコード解説の続き 失敗・トラブル編です。
先日公開した「100時間後に死ぬNFT」のコード解説です。長くなったので2回に分割します。今回はSolidity編です。 100時間後に死ぬNFTの紹介記事 ソースコードはこちら
NFTの第4弾として、「100時間後に死ぬNFT」を作りました。 Claimで新しいNFTを飼って、Feedでエサをあげて育てます。何を言ってるんだ?と思うかもしれませんが、まあ実際に触ってみてください。 飼って育てるNFT !? フルオンチェーンNFT Polygonのメインネ…
長いことプログラマーやってるのですが、恥ずかしながら、今までほとんどテストを書いたことがありません。。。 これではイカンということで、Hardhatでのテストの書き方について調べてみました。 Testing contracts - Hardhat
scriptsディレクトリに、デプロイ以外のスクリプトを書いておくこともできます。 私が使っているスクリプトをいくつか紹介します。 tokenURIからSVGファイルを取得する ガス手数料(Gas Fee)を調べる
Hardhatの使い方の続きです。 デプロイファイルの作成 ローカルネットワークへのデプロイ、テスト、コンソール stand-aloneモード マイニングの設定 テストネットにデプロイ スクリプト Etherscan/PolygonscanのVerify コンストラクタに引数がある場合 おわ…
Solidityの開発環境 Hardhat を試してみました。 実行環境は Windows10, VSCode, Node.js 14.17.6 です。 インストール secrets.jsonを作成 hardhat.config.jsを編集 コンパイル テスト Solidityファイル内でconsole.log
MonoPixelNFTの紹介記事 ソースコードはこちら 今回作ったコントラクトをざっと解説していきます。
OpenSeaではNFTコレクションごとにロゴ画像や説明文が設定できますが、自分で作ったNFTの場合に編集できる場合とできない場合があるので、ちょっとハマりました。 いろいろ調べてみるとRedditに情報がありました。 Can't edit collection : opensea - Reddit…
例えば256個のフラグを管理したいとき、256個のboolを用意するのではなく、 ビット演算を使えば1つのuint256で256個のフラグを管理できるじゃないかと思ったので、方法を調べてみました。 ガスも節約できるはず!? 参考: ビット演算 (bit 演算) の使い方を…
NFT第2弾として、おみくじNFT を作ってみました。
ERC721EnumerableとERC721Burnableを継承してNFTを作って、テストネットにデプロイしたのですが、 mintできなくなってしまいました。 バッドケースとして共有しておきます。
Solidityの多重継承がよくわからなかったので整理。 (C#には多重継承が無いので。。。) 多重継承 ダイヤモンド継承 親と祖父を継承 virtualとoverride 多重継承とoverride ダイヤモンド継承とoverride 実践編: ERC721EnumerableとERC721Burnableを継承する
Solidityの勉強として、シンプルなフルオンチェーンNFT (HelloNFT) を作ってみました。
継承についてのメモ。 親のコンストラクタの引数を指定する方法 多重継承と順番 継承とコンストラクタ
viewやpureの関数を外部から呼び出したときはガス代がかからない。 これはトランザクションを作成して状態変数を書き換えるわけではなく、単にそのノードで計算するだけだから。 viewやpure以外の関数を実行するときには、ガスを消費し、ガスリミットを超え…
コントラクトからイーサを送金する方法について調べていたら、リエントランシー攻撃という、すごくややこしい話に踏み込んでしまって、なかなか理解するのが大変でした。 単にイーサを送るだけでこんなに大変だとは。。。 今後のためにわかったことをメモし…
随時追加編集していきます。 文字列の連結 一般的なプログラミング言語のように +で連結できない。(驚き!) string s = "abc" + "def";
Etherscan(やPolygonscan)のContractのページにCodeを登録するためには、書いたSolidityをフラット化(flatten)する必要がある。
ERC-721を別のアドレスに送るのってどうやればいいのかわからなかったので調べてみました。 ERC 721 - OpenZeppelin Docs
LootというテキストNFTが流行っていて、類似のNFTが大量にリリースされています。 その中でRarityというのが評判が良いのでやってみました。 Loot & Rarity. What dom achieved with loot was truly… | by Andre Cronje | Sep, 2021 | Medium