Skip to content

Jer-B/Foundry_NFTBasic_and_NFTMood

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English README Jump to Japanese Version

Preview

For an easy interaction with the contract use abi.ninja website. Here is a link to the contract loaded on it:

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.

# Foundry NFT

Contract for BasicNFT is deployed at 0x7fdC673352cb7b8Efa1EB69A28DDe4FA2e1D0A8C View on Sepolia

Contract for MoodNFT is deployed at 0x5ef9f85711932c78f80f70ee4dd4c7621aed33ce View on Sepolia

  1. An IPFS Hosted NFT
  2. 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

NFTs for the BasicNFT contract


NFT Pug NFT Shiba NFT St.Bernard


NFTs for the MoodNFT contract, Dynamic NFT


NFT Happy NFT Frown


Requirements

  • git
    • You'll know you did it right if you can run git --version and you see a response like git version x.x.x
  • foundry
    • You'll know you did it right if you can run forge --version and you see a response like forge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)

Quickstart

git clone https://github.com/Jer-B/Foundry_NFTBasic_and_NFTMood
cd Foundry_NFTBasic_and_NFTMood
forge install
forge build

Start a local node

make anvil

Deploy

This will default to your local node. You need to have it running in another terminal in order for it to deploy.

make deploy

Testing

  1. Unit
  2. Integration
  3. Forked
  4. Staging

This repo we cover #1 and #3.

forge test

or

forge test --fork-url $alchemy_RPC_sepolia

Test Coverage

forge coverage

Deployment to a testnet or mainnet

  1. 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.
  • 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.

  1. Get testnet ETH

Head over to faucets.chain.link and get some testnet ETH. You should see the ETH show up in your metamask.

  1. Deploy (IPFS NFT)
make deploy ARGS="--network sepolia"
  1. Deploy (SVG NFT)
make deploySvg ARGS="--network sepolia"

Base64

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)"

Estimate gas

You can estimate how much gas things cost by running:

forge snapshot

And you'll see and output file called .gas-snapshot

Formatting

To run code formatting:

forge fmt

日本語版のREADME

プレビュー

コントラクトとの簡単な対話には abi.ninja ウェブサイトを使用してください。 以下は、それにロードされたコントラクトへのリンクです:

左側の関数をクリックして、それらをページの中央に追加し、それらと対話します。

  • READカテゴリーの下にある関数は実際の値を取得するためのものです。

  • Writeカテゴリーの下にある関数は新しいデータを挿入するためのものです。

  • 注意: 上記のコントラクトは Sepolia テストネット上にデプロイされており、それと対話するにはテストネット用の資金が必要です。

# Foundry NFT

BasicNFTコントラクトは、0x7fdC673352cb7b8Efa1EB69A28DDe4FA2e1D0A8C にデプロイされています。 View on Sepolia

MoodNFTコントラクトは、0x5ef9f85711932c78f80f70ee4dd4c7621aed33ce にデプロイされています。 View on Sepolia

  1. IPFSホストされたNFT
  2. SVG NFT(100%オンチェーンホスト)

Foundryを学ぶために、Cyfrin Foundry Blockchainコースの32時間の長いビデオを使用しました。 Cyfrin Foundry

BasicNFTコントラクトのNFT


NFT Pug NFT Shiba NFT St.Bernard


MoodNFTコントラクトのNFT, (ダイナミックNFT)


NFT Happy NFT Frown


必要条件

  • git
    • git --version を実行して git version x.x.x のような応答が表示されれば成功です。
  • foundry
    • forge --version を実行して forge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z) のような応答が表示されれば成功です

Quickstart

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. ユニットテスト
  2. 統合テスト
  3. フォークテスト
  4. ステージングテスト

このリポジトリではテスト番号1と3をカバーしています。

forge test

or

forge test --match-test testFunctionName

上記の testFunctionName を実際にテストしたいテスト関数の名前に変更しないでください。(test フォルダ内のファイルから関数を参照してください)

or

forge test --fork-url $alchemy_RPC_sepolia

テストカバレッジ

forge coverage

テストネットまたはメインネットへのデプロイ

  1. 環境変数の設定

alchemy_RPC_sepoliaPRIVATE_KEY_TESTNET を環境変数として設定する必要があります。これらを .env ファイルに追加することができます。.env.example に示されているようなものです。

オプションで、 Etherscan で契約を検証したい場合は ETHERSCAN_API_KEY を追加してください。

  1. テストネットETHを取得

faucets.chain.link にアクセスし、テストネットETHを取得してください。MetamaskでETHが表示されるはずです。

  1. デプロイ (IPFS NFT)
make deploy ARGS="--network sepolia"
  1. デプロイ (SVG NFT)
make deploySvg ARGS="--network sepolia"

Base64

画像の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