English README Jump to Japanese Version
For an easy interaction with the contract use abi.ninja website. Here is a link to the contract loaded on it:
- BasicNFT = Foundry BasicNFT contract
- DynamicNFT = Foundry MoodNFT contract
Click on function on the left to add them in the center of the page and interact with them.
-
Functions under the 'READ' category are for getting actual values.
-
Functions under the 'Write' category are for inserting new data.
-
NOTE: The above contract is deployed on the Sepolia Testnet, so testnet funds are required for interacting with it.
Contract for BasicNFT is deployed at 0x7fdC673352cb7b8Efa1EB69A28DDe4FA2e1D0A8C View on Sepolia
Contract for MoodNFT is deployed at 0x5ef9f85711932c78f80f70ee4dd4c7621aed33ce View on Sepolia
- An IPFS Hosted NFT
- An SVG NFT (Hosted 100% on-chain)
I used the 32 hours long video from Cyfrin Foundry Blockchain course to learn about Foundry.
Cyfrin Foundry
- git
- You'll know you did it right if you can run
git --version
and you see a response likegit version x.x.x
- You'll know you did it right if you can run
- foundry
- You'll know you did it right if you can run
forge --version
and you see a response likeforge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)
- You'll know you did it right if you can run
git clone https://github.com/Jer-B/Foundry_NFTBasic_and_NFTMood
cd Foundry_NFTBasic_and_NFTMood
forge install
forge build
make anvil
This will default to your local node. You need to have it running in another terminal in order for it to deploy.
make deploy
- Unit
- Integration
- Forked
- Staging
This repo we cover #1 and #3.
forge test
or
forge test --fork-url $alchemy_RPC_sepolia
forge coverage
- Setup environment variables
You'll want to set your alchemy_RPC_sepolia
and PRIVATE_KEY_TESTNET
as environment variables. You can add them to a .env
file, similar to what you see in .env.example
.
PRIVATE_KEY_TESTNET
: The private key of your account (like from metamask). NOTE: FOR DEVELOPMENT, PLEASE USE A KEY THAT DOESN'T HAVE ANY REAL FUNDS ASSOCIATED WITH IT.- You can learn how to export it here.
alchemy_RPC_sepolia
: This is url of the sepolia testnet node you're working with. You can get setup with one for free from Alchemy
Optionally, add your ETHERSCAN_API_KEY
if you want to verify your contract on Etherscan.
- Get testnet ETH
Head over to faucets.chain.link and get some testnet ETH. You should see the ETH show up in your metamask.
- Deploy (IPFS NFT)
make deploy ARGS="--network sepolia"
- Deploy (SVG NFT)
make deploySvg ARGS="--network sepolia"
To get the base64 of an image, you can use the following command:
echo "data:image/svg+xml;base64,$(base64 -i ./images/dynamicNft/happy.svg)"
Then, you can get the base64 encoding of the json object by placing the imageURI into happy_image_uri.json
then running:
echo "data:application/json;base64,$(base64 -i ./images/dynamicNft/happy_image_uri.json)"
You can estimate how much gas things cost by running:
forge snapshot
And you'll see and output file called .gas-snapshot
To run code formatting:
forge fmt
コントラクトとの簡単な対話には abi.ninja ウェブサイトを使用してください。 以下は、それにロードされたコントラクトへのリンクです:
- BasicNFT = Foundry BasicNFT contract
- DynamicNFT = Foundry MoodNFT contract
左側の関数をクリックして、それらをページの中央に追加し、それらと対話します。
-
READ
カテゴリーの下にある関数は実際の値を取得するためのものです。 -
Write
カテゴリーの下にある関数は新しいデータを挿入するためのものです。 -
注意: 上記のコントラクトは Sepolia テストネット上にデプロイされており、それと対話するにはテストネット用の資金が必要です。
BasicNFT
コントラクトは、0x7fdC673352cb7b8Efa1EB69A28DDe4FA2e1D0A8C にデプロイされています。
View on Sepolia
MoodNFT
コントラクトは、0x5ef9f85711932c78f80f70ee4dd4c7621aed33ce にデプロイされています。
View on Sepolia
- IPFSホストされたNFT
- SVG NFT(100%オンチェーンホスト)
Foundryを学ぶために、Cyfrin Foundry Blockchainコースの32時間の長いビデオを使用しました。 Cyfrin Foundry
- git
- git --version を実行して git version x.x.x のような応答が表示されれば成功です。
- foundry
- forge --version を実行して forge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z) のような応答が表示されれば成功です
git clone https://github.com/Jer-B/Foundry_NFTBasic_and_NFTMood
cd Foundry_NFTBasic_and_NFTMood
forge install
forge build
make anvil
デプロイメント:
make deploy
- ユニットテスト
- 統合テスト
- フォークテスト
- ステージングテスト
このリポジトリではテスト番号1と3をカバーしています。
forge test
or
forge test --match-test testFunctionName
上記の testFunctionName を実際にテストしたいテスト関数の名前に変更しないでください。(test フォルダ内のファイルから関数を参照してください)
or
forge test --fork-url $alchemy_RPC_sepolia
forge coverage
- 環境変数の設定
alchemy_RPC_sepolia
と PRIVATE_KEY_TESTNET
を環境変数として設定する必要があります。これらを .env ファイルに追加することができます。.env.example に示されているようなものです。
-
PRIVATE_KEY_TESTNET
: アカウントのプライベートキーmetamask). 注意: 開発のために、実際の資金が関連付けられていないキーを使用してください。 -
alchemy_RPC_sepolia
: これはあなたが作業している Sepolia テストネットノードのURLです。 Alchemy から無料でセットアップできます。
オプションで、 Etherscan で契約を検証したい場合は ETHERSCAN_API_KEY を追加してください。
- テストネットETHを取得
faucets.chain.link にアクセスし、テストネットETHを取得してください。MetamaskでETHが表示されるはずです。
- デプロイ (IPFS NFT)
make deploy ARGS="--network sepolia"
- デプロイ (SVG NFT)
make deploySvg ARGS="--network sepolia"
画像のBase64を取得するには、次のコマンドを使用できます:
echo "data:image/svg+xml;base64,$(base64 -i ./images/dynamicNft/happy.svg)"
次に、happy_image_uri.json
に画像URIを配置してから、次を実行してJSONオブジェクトのBase64エンコードを取得できます:
echo "data:application/json;base64,$(base64 -i ./images/dynamicNft/happy_image_uri.json)"
forge snapshot
.gas-snapshot
という名前の出力ファイルが表示されます
コードのフォーマットを実行するには:
forge fmt