{"id":25722710,"url":"https://github.com/nolantait/stack","last_synced_at":"2026-04-15T23:33:06.416Z","repository":{"id":83393752,"uuid":"458814594","full_name":"nolantait/stack","owner":"nolantait","description":"Ruby EVM stack implementation [WIP]","archived":false,"fork":false,"pushed_at":"2022-02-20T14:46:47.000Z","size":136,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-25T19:41:41.935Z","etag":null,"topics":["blockchain","bytecode","ethereum","evm","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/nolantait.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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-13T13:17:38.000Z","updated_at":"2024-07-10T12:18:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"9c897460-2601-4fdd-a30a-b1307cd93526","html_url":"https://github.com/nolantait/stack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nolantait/stack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nolantait%2Fstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nolantait%2Fstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nolantait%2Fstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nolantait%2Fstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nolantait","download_url":"https://codeload.github.com/nolantait/stack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nolantait%2Fstack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31865067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["blockchain","bytecode","ethereum","evm","ruby"],"created_at":"2025-02-25T19:39:39.976Z","updated_at":"2026-04-15T23:33:06.404Z","avatar_url":"https://github.com/nolantait.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stack\n\nStack is a ruby implementation of the EVM which was written to make it easier to\nunderstand Ethereum at the bytecode level.\n\nLearning Ethereum so close to the bytecode will give you major advantages in\noptimizing gas when writing solidity code. Security concerns will also become\nmore understandable when you know exactly what you code compiles to.\n\nRuby is my favourite language and what I'm most comfortable expressing these\nconcepts in. I think ruby is beautiful and makes a great language to read, even\nif you've never written it before.\n\n## Current development status\n\nI haven't implemented all opcodes. So far only one contract has been\nsuccessfully implemented. More on their way.\n\nGas costs are minimally implemented and dynamic gas costs are missing.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'stack'\n```\n\nAnd then execute:\n\n    $ bundle install\n\nOr install it yourself as:\n\n    $ gem install stack\n\n## Usage\n\n### Disassembly\n\nWe can use the disassemble method to turn raw bytecode into\nmore readable EVM assembly code.\n\n```ruby\nrequire \"stack\"\n\nputs Stack.disassemble(\"6005600401\") #=\u003e\n# 0     PUSH1   =\u003e 05\n# 2     PUSH1   =\u003e 04\n# 4     ADD\n\n```\n\n## Referenced resources\n\nThese are resources I used to guide implementation along the way:\n\n- https://www.evm.codes/\n- https://github.com/CoinCulture/evm-tools/blob/master/analysis/ethersignal/ethersignal.md\n- https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies.\nThen, run `rake spec` to run the tests. You can also run `bin/console`\nfor an interactive prompt that will allow you to experiment.\n\nTo install this gem onto your local machine, run `bundle exec rake install`.\nTo release a new version, update the version number in `version.rb`, and\nthen run `bundle exec rake release`, which will create a git tag for the\nversion, push git commits and the created tag, and push the `.gem` file\nto [rubygems.org](https://rubygems.org).\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub\nat https://github.com/nolantait/stack.\n\n## License\n\nThe gem is available as open source under the terms of\nthe [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnolantait%2Fstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnolantait%2Fstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnolantait%2Fstack/lists"}