OpenSeaプロジェクトの模倣


最近はほぼblockchainの勉強が終わり、OpenSeクローンコードプロジェクトが行われました.
Blockchainの勉強が大雑把で少し自信があったので、自信を持ってプロジェクトを始めました.
しかし、習ったこともあり、プロジェクトを始めたばかりの頃はいつも多くの問題に直面していました.
OpenSeaクローンコードプロジェクトgithub repositoryリンク

実装された機能


まず私が実現した機能は2つあります.
  • は、ERC-721の表示および伝送機能
  • を有する.
  • ERC-20タグ付き表示および伝送機能
  • NFT(ERC-721)の表示と伝送機能を有する


    この機能を実装する際に直面する困難は、ユーザが所有するNFTが複数のスマート契約に依存している場合、これらのNFTをどのように表示および伝送するかである.
    ユーザーが持つNFTが複数のスマート契約に依存している場合?
    	for (const [abi, address] of contracts) {
          const contract = new web3.eth.Contract(abi, address);
          const name = await contract.methods.name().call();
          const totalSupply = await contract.methods.totalSupply().call();
    
          for (let tokenId = 1; tokenId <= totalSupply; tokenId++) {
            const tokenOwner = await contract.methods.ownerOf(tokenId).call();
            if (tokenOwner === accounts[0]) {
              const tokenPrice = await contract.methods.tokenPrice(tokenId).call();
              const tokenURI = await contract.methods.tokenURI(tokenId).call();
              setMyNFTs((prevState) => {
                return [
                  ...prevState,
                  { contract, name, tokenPrice, tokenId, tokenURI },
                ];
              });
            }
          }
        }
    この問題は,ユーザが持つスマート契約情報を直接インポートし,for文で順次アクセスするコードで見られる.
    勉強するときはいつも賢い契約に近い.
    そのせいか、最初はこの問題に遭遇した時は慌てていましたが、少し考えて、すぐに問題を解決しました.

    トークン(ERC-20)の表示と伝送機能を保持する



    この機能は実装時に特に困難はない.
    ただERC-20を学習する際には反応を利用した先端部分が付加されている.
    しかし、初めてfront-endの機能を完全に実現したので、完成したときはとても面白くて、嬉しかったです.

    プロジェクト内の問題


    このプロジェクトには実は多くの問題がある.
    その中で最も残念なのは、サーバとデータベースの欠落だと思います.
    実際、私はBlockchainを勉強していたとき、奇妙な頑固さを生んだ.
    中央化された性質を最大限に保ち、プロジェクトを完成させます!!

    そのため、サーバとデータベースがない場合はonlyfront-endandsmart契約でプロジェクトを完了したいと思います.
    しかし、今回のプロジェクトを通じて、Blockchainサービスにもサーバとデータベースが必要になる可能性があることに気づきました.
    インテリジェント工場は速度とガス代の面で多くの問題がある.
    しかし,サーバやデータベースの使用により,この速度やガス料金の問題がある程度緩和されることを認識した.