{"id":19358342,"url":"https://github.com/paritytech/wasm-instrument","last_synced_at":"2025-04-05T08:03:56.101Z","repository":{"id":37990851,"uuid":"446886333","full_name":"paritytech/wasm-instrument","owner":"paritytech","description":"Instrument and transform wasm modules.","archived":false,"fork":false,"pushed_at":"2024-07-31T21:04:44.000Z","size":965,"stargazers_count":50,"open_issues_count":10,"forks_count":18,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-29T07:02:28.738Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paritytech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-11T15:54:10.000Z","updated_at":"2025-03-21T00:19:47.000Z","dependencies_parsed_at":"2023-11-07T09:28:38.754Z","dependency_job_id":"42691842-cbfc-4800-adc0-e7d6b87d0dc5","html_url":"https://github.com/paritytech/wasm-instrument","commit_stats":{"total_commits":442,"total_committers":27,"mean_commits":16.37037037037037,"dds":"0.39140271493212675","last_synced_commit":"51daef9eba6f3f77aeacf4e4df1533573639fbac"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fwasm-instrument","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fwasm-instrument/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fwasm-instrument/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fwasm-instrument/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paritytech","download_url":"https://codeload.github.com/paritytech/wasm-instrument/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305932,"owners_count":20917208,"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-10T07:11:17.260Z","updated_at":"2025-04-05T08:03:56.069Z","avatar_url":"https://github.com/paritytech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wasm-instrument\n\nA Rust library containing a collection of wasm module instrumentations and transformations\nmainly useful for wasm based block chains and smart contracts.\n\n## Provided functionality\n\nThis is a non exhaustive list of provided functionality. Please check out the [documentation](https://docs.rs/wasm-instrument/latest/wasm_instrument/) for details.\n\n### Gas Metering\n\nAdd gas metering to your platform by injecting the necessary code directly into the wasm module. This allows having a uniform gas metering implementation across different execution engines (interpreters, JIT compilers).\n\n### Stack Height Limiter\n\nNeither the wasm standard nor any sufficiently complex execution engine specifies how many items on the wasm stack are supported before the execution aborts or malfunctions. Even the same execution engine on different operating systems or host architectures could support a different number of stack items and be well within its rights.\n\nThis is the kind of indeterminism that can lead to consensus failures when used in a blockchain context.\n\nTo address this issue we can inject some code that meters the stack height at runtime and aborts the execution when it reaches a predefined limit. Choosing this limit suffciently small so that it is smaller than what any reasonably parameterized execution engine would support solves the issue: All execution engines would reach the injected limit before hitting any implementation specific limitation.\n\n## License\n\n`wasm-instrument` is distributed under the terms of both the MIT license and the\nApache License (Version 2.0), at your choice.\n\nSee LICENSE-APACHE, and LICENSE-MIT for details.\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in `wasm-instrument` by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Fwasm-instrument","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparitytech%2Fwasm-instrument","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Fwasm-instrument/lists"}