{"id":13759911,"url":"https://github.com/maurelian/solidity-sandbox","last_synced_at":"2025-08-20T01:32:08.209Z","repository":{"id":47322995,"uuid":"460206040","full_name":"maurelian/solidity-sandbox","owner":"maurelian","description":"A forkable template repo for easily writing and testing toy contracts","archived":false,"fork":false,"pushed_at":"2024-01-24T02:07:31.000Z","size":1458,"stargazers_count":149,"open_issues_count":0,"forks_count":30,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-02T02:19:53.479Z","etag":null,"topics":["forge","foundry","solidity"],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maurelian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2022-02-16T22:58:54.000Z","updated_at":"2025-05-13T15:44:05.000Z","dependencies_parsed_at":"2024-01-17T16:58:15.207Z","dependency_job_id":"b8376435-c352-4e92-a0aa-37d45e00776a","html_url":"https://github.com/maurelian/solidity-sandbox","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/maurelian/solidity-sandbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maurelian%2Fsolidity-sandbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maurelian%2Fsolidity-sandbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maurelian%2Fsolidity-sandbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maurelian%2Fsolidity-sandbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maurelian","download_url":"https://codeload.github.com/maurelian/solidity-sandbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maurelian%2Fsolidity-sandbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271252409,"owners_count":24726910,"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","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["forge","foundry","solidity"],"created_at":"2024-08-03T13:01:00.824Z","updated_at":"2025-08-20T01:32:07.868Z","avatar_url":"https://github.com/maurelian.png","language":"Solidity","funding_links":[],"categories":["dApps directory"],"sub_categories":["Smart Contract Tools"],"readme":"# Solidity Sandbox\n\n![Picture of a sandbox](./sandbox.png)\n\nJust a simple [forge](https://book.getfoundry.sh/forge/) based repo for playing around with and\nunderstanding solidity toy code.\n\nSee how other's are using it:\n- [maurelian's branch](https://github.com/maurelian/solidity-sandbox/tree/maurelian)\n- [devtooligan's fork](https://github.com/devtooligan/solidity-sandbox)\n\n## Conventions\n\nThe whole purpose of this repo is to make it fast and easy to test stuff, and then keep the test code for\nfuture reference. Specific test contracts can be chosen for testing.  Replace `\u003ccontract name\u003e` with full or partial contract name:\n\n`forge test --match-contract \u003ccontract name\u003e` or `forge test --mc \u003ccontract name\u003e`\n\n\n## Creating a new test\n\nI don't want to have to think about avoiding contract naming collision, so each new test file\nis prefixed with a number, and all the contract names in that file have that same number as a suffix.\n\nThere's now a script to generate a new file with a contract and empty test function. Just run the following replacing `\u003ctest_name\u003e` with the name of your test (file naming conventions apply, avoid spaces).  Or omit the test name to invoke _interactive mode_.\n\n```sh\n./newTest.sh \u003ctest name\u003e\n```\n\n## Yul code\n\nOccasionally it's helpful to generate the Yul intermediate representation to understand what's\nhappening underneath the hood. In that case, I'll just use a command like the following to\nput the IR into the `./ir` dir. Using a `.sol` extension gives pretty decent syntax highlighting\nfor readability.\n\n```\nforge inspect Target16 ir \u003e! ir/bytesArgLenCheck16.yul.sol\n```\n\nYul code can be compiled with `solc --strict-assembly`.\n\n\n## Advanced Installation Tip\nYou can create a bash function that will change directories and call newTest.\nAdd it to your `.bashrc` file so you can call `scratch` from anywhere!\n\n```bash\nscratch() {\n  cd \u003cpath to solidity-sandbox\u003e\n  bash newTest.sh $1\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaurelian%2Fsolidity-sandbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaurelian%2Fsolidity-sandbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaurelian%2Fsolidity-sandbox/lists"}