{"id":20293051,"url":"https://github.com/mingderwang/chatgtp-wallet-foundry","last_synced_at":"2026-05-13T02:12:01.902Z","repository":{"id":257181943,"uuid":"857541912","full_name":"mingderwang/chatgtp-wallet-foundry","owner":"mingderwang","description":"https://chatgpt.com/share/66e61ae2-2f70-800f-94c2-9fd9366bbe50","archived":false,"fork":false,"pushed_at":"2024-09-15T00:01:28.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T09:16:20.659Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mingderwang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-14T23:23:02.000Z","updated_at":"2024-09-24T03:46:42.000Z","dependencies_parsed_at":"2024-09-15T06:58:57.513Z","dependency_job_id":"754df3a7-2710-48c6-a5d9-3283f94fd6a4","html_url":"https://github.com/mingderwang/chatgtp-wallet-foundry","commit_stats":null,"previous_names":["mingderwang/chatgtp-wallet-foundry"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fchatgtp-wallet-foundry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fchatgtp-wallet-foundry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fchatgtp-wallet-foundry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fchatgtp-wallet-foundry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mingderwang","download_url":"https://codeload.github.com/mingderwang/chatgtp-wallet-foundry/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241787485,"owners_count":20020101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T15:21:04.480Z","updated_at":"2026-05-13T02:11:56.882Z","avatar_url":"https://github.com/mingderwang.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"## ChatGTP is Wrong\n\n```\n    function isValidSignature(bytes32 hash, bytes memory signature) public view returns (bytes4) {\n        bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n        address recoveredSigner = recoverSigner(messageHash, signature);\n\n        if (recoveredSigner == owner) {\n            return 0x1626ba7e; // Magic value for valid signatures\n        } else {\n            return 0xffffffff; // Invalid signature\n        }\n    }\n\n    function recoverSigner(bytes32 _hash, bytes memory _signature) internal pure returns (address) {\n        (bytes32 r, bytes32 s, uint8 v) = splitSignature(_signature);\n        return ecrecover(_hash, v, r, s);\n    }\n```\n\nIt's clear that, Wallet Contract can't use ecrecover to return the signer's address.\n\n```\n➜  chatgtp-wallet-foundry git:(main) ✗ forge test\n[⠢] Compiling...\nNo files changed, compilation skipped\n\nRan 3 tests for test/Wallet.t.sol:WalletTest\n[FAIL. Reason: assertion failed: 0xffffffff00000000000000000000000000000000000000000000000000000000 != 0x3078666666666666666600000000000000000000000000000000000000000000] testInvalidSignature() (gas: 18076)\n[PASS] testOwnerIsSet() (gas: 10592)\n[FAIL. Reason: assertion failed: 0xffffffff00000000000000000000000000000000000000000000000000000000 != 0x3078313632366261376500000000000000000000000000000000000000000000] testValidSignature() (gas: 25801)\nSuite result: FAILED. 1 passed; 2 failed; 0 skipped; finished in 66.28ms (5.70ms CPU time)\n\nRan 1 test suite in 1.16s (66.28ms CPU time): 1 tests passed, 2 failed, 0 skipped (3 total tests)\n\nFailing tests:\nEncountered 2 failing tests in test/Wallet.t.sol:WalletTest\n[FAIL. Reason: assertion failed: 0xffffffff00000000000000000000000000000000000000000000000000000000 != 0x3078666666666666666600000000000000000000000000000000000000000000] testInvalidSignature() (gas: 18076)\n[FAIL. Reason: assertion failed: 0xffffffff00000000000000000000000000000000000000000000000000000000 != 0x3078313632366261376500000000000000000000000000000000000000000000] testValidSignature() (gas: 25801)\n\nEncountered a total of 2 failing tests, 1 tests succeeded\n```\n\n## Foundry\n\n**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**\n\nFoundry consists of:\n\n-   **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools).\n-   **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.\n-   **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network.\n-   **Chisel**: Fast, utilitarian, and verbose solidity REPL.\n\n## Documentation\n\nhttps://book.getfoundry.sh/\n\n## Usage\n\n### Build\n\n```shell\n$ forge build\n```\n\n### Test\n\n```shell\n$ forge test\n```\n\n### Format\n\n```shell\n$ forge fmt\n```\n\n### Gas Snapshots\n\n```shell\n$ forge snapshot\n```\n\n### Anvil\n\n```shell\n$ anvil\n```\n\n### Deploy\n\n```shell\n$ forge script script/Counter.s.sol:CounterScript --rpc-url \u003cyour_rpc_url\u003e --private-key \u003cyour_private_key\u003e\n```\n\n### Cast\n\n```shell\n$ cast \u003csubcommand\u003e\n```\n\n### Help\n\n```shell\n$ forge --help\n$ anvil --help\n$ cast --help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmingderwang%2Fchatgtp-wallet-foundry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmingderwang%2Fchatgtp-wallet-foundry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmingderwang%2Fchatgtp-wallet-foundry/lists"}