Now and Nawoo

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

2021-01-01から1年間の記事一覧

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 のコード解説(2) SVG

NFT

「100時間後に死ぬNFT」のコード解説の続き、SVG編です。 前回の記事 ソースコードはこちら

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

ethers.js 使い方メモ

Hardhatではethers.jsを使っているので、Web UIサイトを作成するときにもweb3.jsではなくethers.jsを使ってみることにしました。 ethers.js ドキュメント

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の紹介記事 ソースコードはこちら 今回作ったコントラクトをざっと解説していきます。

白黒ピクセルアートNFTを作りました (MonoPixelNFT)

NFT

NFT第3弾として、白黒の16x16ピクセルアートのNFTを作りました。 フルオンチェーンNFT ピクセルアートを描いて、それをNFTとして発行できます(ガス代のみ) 同じピクセルアートは1枚しか発行できません Polygonのメインネットに公開 ピクセルアートを作成す…

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を継承する

Nethereumで既存のコントラクトを扱う

C#

Nethereumで既存のコントラクトを扱う方法。 ドキュメントでは自作のコントラクトを扱う説明しか見つけられなかったが、既存のコントラクトもソースコード(Solidity)があれば同じように扱える。 VS Code Solidity code generation demo - Nethereum Document…

Truffle Verify Plugin の使い方

Truffle Verify Pluginは、EtherscanやPolygonscanにコントラクトのコードを登録するためのプラグイン。 Flattenせずに、ちゃんと複数ファイルで登録してくれる。 GitHub - rkalis/truffle-plugin-verify Automatically verify Truffle smart contracts on E…

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

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

RinkebyのFaucet

Ethereumのテストネット Rinkeby を使おうと思ったのだが、FaucetからETHを取得するのがすごく大変だった。 Faucetはこちら → Rinkeby: Network Dashboard

Truffle 使い方メモ (2) Polygon Testnetにデプロイ

TruffleでPolygon Testnet (mumbai) にデプロイするまでの手順。 公式ドキュメント → Using Truffle | Polygon Technolgy | Documentation

Solidityの学習メモ: 継承

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

Azure Functions 使い方メモ (VS2019)

C#

ひさびさにAzure Functionsを使おうとしたら、すごくハマったので、手順をメモしておきます。

Truffle 使い方メモ (1) プロジェクト作成~デプロイ

実行環境は Windows10, VSCode, Node.js 14.17.6

Nethereumサンプルコード: Account関連

C#

Accountの作成、KeyStoreの作成、Accountの復元、ニモニックワードの作成、HDWalletの作成などのサンプルコードです。

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

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

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

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

nvm-windowsの使い方メモ (Node.jsバージョン管理)

WindowsでNode.jsを使うときは、直接Node.jsをインストールするより、バージョンマネージャーの nvm-windows をインストールする方がよい。 nvmでは複数バージョンのNode.jsをインストールして、nvm useコマンドでバージョンを切り替えることができる。 ちょ…