poatan
@poatan

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

remix-ideでdeployするとcreation of BrandVerification pending...で止まる

解決したいこと

ubuntuでgethと接続した状態でremix-ideを起動し、コードを正常にデプロイしたいです。
解決方法を教えてください。

発生している問題・エラー

ubuntuでgethと接続した状態でremix-ideを起動し、コードをデプロイしたのですが、Deploy & Run TransactionsタグのDeployed Contractsの下に表示されるCurrently you have no contract instances to interact with.は消えず、コンソールにはcreation of BrandVerification pending...状態で止まっています。

スクリーンショット 2024-11-06 001054.png

該当するソースコード

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract BrandVerification {
    struct Product {
        string serialNumber;
        address[] owners;
    }

    mapping(string => Product) private products;

    // ブランド品を登録
    function registerProduct(string memory _serialNumber) public {
        require(products[_serialNumber].owners.length == 0, "Product already registered");
        products[_serialNumber].serialNumber = _serialNumber;
        products[_serialNumber].owners.push(msg.sender);
    }

    // 真正性を確認
    function verifyProduct(string memory _serialNumber) public view returns (bool) {
        return products[_serialNumber].owners.length > 0;
    }

    // 所有権を移転
    function transferOwnership(string memory _serialNumber, address newOwner) public {
        require(products[_serialNumber].owners.length > 0, "Product not registered");
        require(products[_serialNumber].owners[products[_serialNumber].owners.length - 1] == msg.sender, "Not the owner");

        products[_serialNumber].owners.push(newOwner);
    }

    // 流通履歴を取得
    function getHistory(string memory _serialNumber) public view returns (address[] memory) {
        return products[_serialNumber].owners;
    }
}

remix-ideとethereumノードの接続方法

  • ubuntuで端末を立ち上げ、gethを起動

    $ geth --networkid "15" --nodiscover --datadir "./" --mine --unlock (アドレス) --allow-insecure-unlock --http --http.addr "127.0.0.1" --http.port "8545" --http.corsdomain "*" console 2>> ./geth.log
    
  • 新たに端末を立ち上げremix-ideを起動

    $ docker pull remixproject/remix-ide:latest
    $ docker run -p 8080:80 remixproject/remix-ide:latest
    
  • ブラウザ(firefox)で以下を実行
    http://localhost:8080

  • remix-ide内のDeploy & Run TransactionsタグのEnvironmentでweb3 providerを選択し、以下を指定
    http://127.0.0.1:8545

  • Deploy & Run TransactionsタグのAccountでgethのアカウントが表示されていることから接続はできていると思う

自分で試したこと

gethとsolidityの互換性を保つため、gethのv1.10.25にあわせ、
solc v0.4.0として上記コードをバージョンに合わせて書き換え実行したが、結果は同じ。

0

1Answer

Your answer might help someone💌