Now and Nawoo

NFTの制作記録、技術メモ → C#, Solidity, Blockchain, Bitcoin, Ethereum, NFT

Solidity

Hardhatの使い方メモ(5) - fixture

Hardhatでテストを書くときに、fixtureというのがあります。 テストを実行すると、各テスト項目ごとに、コントラクトのデプロイなど同じ処理を繰り返し行う必要があります。 fixtureを使うと、時間のかかる処理をした後にスナップショットをとって、2回目以…

OnChainSlimeの紹介とコード解説(2)

コード解説 OnChainSlimeのコード解説(1) の続きです。 コードはこちら → PolygonScan

OnChainSlimeの紹介とコード解説 (1)

おひさしぶりです。 しばらく忙しくてブログさぼってましたが、そろそろ再開したいと思います。 さて、今日はOnChainSlimeという新作NFTの紹介とコード解説です。

Solidityメモ: structの初期化

struct(構造体)の初期化でちょっとハマったのでメモ。 (Solidity 0.8.10でテストしています。) Solidity documentation - Types - Structs

ShieldBitmapNFTのコード解説

遅くなってしまいましたが、ちょっと前に作ったShieldBitmapNFTの紹介とコード解説です。 ShieldBitmapNFTの紹介 NFT第5弾になります。Bitmapライブラリ(@h2uenoさん作)を使ってジェネラティブNFT作ってみました。 フルオンチェーン Polygonメインネット ガ…

Solidityメモ: 型変換(キャスト)

Solidityの型変換(キャスト)は少しややこしいので、整理してみました。 uintとint bytesとstring 小さな型/大きな型への変換 intの場合 bytesNとbytes

100時間後に死ぬNFT のコード解説(3) 失敗・トラブル編

「100時間後に死ぬNFT」のコード解説の続き 失敗・トラブル編です。

100時間後に死ぬNFT のコード解説(1) Solidity

先日公開した「100時間後に死ぬNFT」のコード解説です。長くなったので2回に分割します。今回はSolidity編です。 100時間後に死ぬNFTの紹介記事 ソースコードはこちら

100時間後に死ぬNFT を作りました

NFTの第4弾として、「100時間後に死ぬNFT」を作りました。 Claimで新しいNFTを飼って、Feedでエサをあげて育てます。何を言ってるんだ?と思うかもしれませんが、まあ実際に触ってみてください。 飼って育てるNFT !? フルオンチェーンNFT Polygonのメインネ…

Hardhatの使い方メモ(4) テスト

長いことプログラマーやってるのですが、恥ずかしながら、今までほとんどテストを書いたことがありません。。。 これではイカンということで、Hardhatでのテストの書き方について調べてみました。 Testing contracts - Hardhat

Hardhatの使い方メモ(3) scripts

scriptsディレクトリに、デプロイ以外のスクリプトを書いておくこともできます。 私が使っているスクリプトをいくつか紹介します。 tokenURIからSVGファイルを取得する ガス手数料(Gas Fee)を調べる

Hardhatの使い方メモ (2) デプロイ~Verify

Hardhatの使い方の続きです。 デプロイファイルの作成 ローカルネットワークへのデプロイ、テスト、コンソール stand-aloneモード マイニングの設定 テストネットにデプロイ スクリプト Etherscan/PolygonscanのVerify コンストラクタに引数がある場合 おわ…

Hardhatの使い方メモ (1) セットアップ~コンパイル

Solidityの開発環境 Hardhat を試してみました。 実行環境は Windows10, VSCode, Node.js 14.17.6 です。 インストール secrets.jsonを作成 hardhat.config.jsを編集 コンパイル テスト Solidityファイル内でconsole.log

MonoPixelNFTのコード解説

MonoPixelNFTの紹介記事 ソースコードはこちら 今回作ったコントラクトをざっと解説していきます。

OpenSeaで自作のNFTを編集できない場合

OpenSeaではNFTコレクションごとにロゴ画像や説明文が設定できますが、自分で作ったNFTの場合に編集できる場合とできない場合があるので、ちょっとハマりました。 いろいろ調べてみるとRedditに情報がありました。 Can't edit collection : opensea - Reddit…

Solidityメモ: ビット演算

例えば256個のフラグを管理したいとき、256個のboolを用意するのではなく、 ビット演算を使えば1つのuint256で256個のフラグを管理できるじゃないかと思ったので、方法を調べてみました。 ガスも節約できるはず!? 参考: ビット演算 (bit 演算) の使い方を…

おみくじNFTを作りました

NFT第2弾として、おみくじNFT を作ってみました。

失敗談: NFTを作ったらmintできなくなってしまった

ERC721EnumerableとERC721Burnableを継承してNFTを作って、テストネットにデプロイしたのですが、 mintできなくなってしまいました。 バッドケースとして共有しておきます。

Solidityメモ: 多重継承

Solidityの多重継承がよくわからなかったので整理。 (C#には多重継承が無いので。。。) 多重継承 ダイヤモンド継承 親と祖父を継承 virtualとoverride 多重継承とoverride ダイヤモンド継承とoverride 実践編: ERC721EnumerableとERC721Burnableを継承する

シンプルなフルオンチェーンNFTを作りました

Solidityの勉強として、シンプルなフルオンチェーンNFT (HelloNFT) を作ってみました。

Solidityの学習メモ: 継承

継承についてのメモ。 親のコンストラクタの引数を指定する方法 多重継承と順番 継承とコンストラクタ

viewやpure関数で無限ループしたらどうなる?

viewやpureの関数を外部から呼び出したときはガス代がかからない。 これはトランザクションを作成して状態変数を書き換えるわけではなく、単にそのノードで計算するだけだから。 viewやpure以外の関数を実行するときには、ガスを消費し、ガスリミットを超え…

イーサの送金とリエントランシー攻撃

コントラクトからイーサを送金する方法について調べていたら、リエントランシー攻撃という、すごくややこしい話に踏み込んでしまって、なかなか理解するのが大変でした。 単にイーサを送るだけでこんなに大変だとは。。。 今後のためにわかったことをメモし…

Solidity 学習メモ:文字列

随時追加編集していきます。 文字列の連結 一般的なプログラミング言語のように +で連結できない。(驚き!) string s = "abc" + "def";

Solidityのflattenerについて

Etherscan(やPolygonscan)のContractのページにCodeを登録するためには、書いたSolidityをフラット化(flatten)する必要がある。

ERC-721トークンのtransferとapprove

ERC-721を別のアドレスに送るのってどうやればいいのかわからなかったので調べてみました。 ERC 721 - OpenZeppelin Docs

Rarity (NFT) をやってみた

LootというテキストNFTが流行っていて、類似のNFTが大量にリリースされています。 その中でRarityというのが評判が良いのでやってみました。 Loot & Rarity. What dom achieved with loot was truly… | by Andre Cronje | Sep, 2021 | Medium