o1-labs / zkapp-cli

CLI to create a zkApp (zero-knowledge app) for Mina Protocol
https://docs.minaprotocol.com/zkapps/how-to-write-a-zkapp
Apache License 2.0
115 stars 43 forks source link

Impossible to deploy a token #635

Closed asimaranov closed 3 months ago

asimaranov commented 3 months ago

Describe the bug

Trying to deploy a token like

class ZkNoidCoin extends TokenContract implements Erc20Like {
  // constant supply
  SUPPLY = UInt64.from(1_000_000_000n * 10n ** 9n);

where TokenContract extends SmartContract I got error

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/andrey/projects/zknoid-token-2/contracts/build/src/undefined' imported from /Users/andrey/.nvm/versions/node/v18.19.1/lib/node_modules/zkapp-cli/src/lib/deploy.js

The error is in function findSmartContracts main/src/lib/deploy.js#L677 that expects the following pattern:

export async function findSmartContracts(path) {
   ...
    // 
    let results = str.matchAll(/class (\w*) extends SmartContract/gi);
}

If contract extends not the SmartContract directly but any contract that extends SmartContract (e.g. TokenContract from o1js), it's not found by the deployer

Steps to Reproduce

Create contract like here https://github.com/o1-labs/o1js/blob/main/src/examples/zkapps/dex/erc20.ts Try to deploy it

System Info

System:
    OS: macOS 14.4
    CPU: (16) arm64 Apple M3 Max
  Binaries:
    Node: 18.19.1 - ~/.nvm/versions/node/v18.19.1/bin/node
    Yarn: 1.22.21 - ~/.nvm/versions/node/v18.19.1/bin/yarn
    npm: 10.2.4 - ~/.nvm/versions/node/v18.19.1/bin/npm
  npmPackages:
    o1js: 1.1.0
  npmGlobalPackages:
    zkapp-cli: 0.20.1

Severity

serious, but I can work around it

Additional Information

No response