{"id":24567309,"url":"https://github.com/autonomoussoftware/metronome","last_synced_at":"2025-07-18T22:33:15.912Z","repository":{"id":51871360,"uuid":"122709409","full_name":"autonomoussoftware/metronome","owner":"autonomoussoftware","description":"Metronome autonomous system","archived":false,"fork":false,"pushed_at":"2022-08-24T00:04:10.000Z","size":11387,"stargazers_count":15,"open_issues_count":7,"forks_count":10,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-22T12:59:09.539Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/autonomoussoftware.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}},"created_at":"2018-02-24T06:11:52.000Z","updated_at":"2024-11-16T12:21:54.000Z","dependencies_parsed_at":"2022-08-23T12:31:18.733Z","dependency_job_id":null,"html_url":"https://github.com/autonomoussoftware/metronome","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/autonomoussoftware/metronome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/autonomoussoftware","download_url":"https://codeload.github.com/autonomoussoftware/metronome/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265846861,"owners_count":23838157,"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":"2025-01-23T13:17:46.618Z","updated_at":"2025-07-18T22:33:15.865Z","avatar_url":"https://github.com/autonomoussoftware.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"./logo.png\" alt=\"Metronome\" width=\"50%\"\u003e\n\u003c/h1\u003e\n\nⓂ️ Metronome Token Contracts as described in the [Metronome User's Manual](https://www.metronome.io/pdf/owners_manual.pdf)\n\n## Index\n1. [Requirements](#requirements)\n1. [Getting Started](#getting-started)\n1. [Installation](#installation)\n1. [Test Suite](#test-suite)\n1. [License](#license)\n\n## Requirements\n\nYou will need a MacOS or Linux system.\n\n- Install the latest version of `parity`.\n- Install the latest version of `solc`.\n- Install the latest version of `npm`.\n\nLocal development is worked against TestRPC (which will be installed via `npm`).   Parity is used to test against a local dev-chain (see `parity-spec.json`) and can also be used to test agains Ropsten TestNet or the Public MainNet.\n\n## Getting Started\n\n### Production Environment\n\n* **Explorer URL**: https://explorer.metronome.io\n* **Auction Board URL**: https://metronome.io\n\n### Production Contracts\n\n**Version**: autonomoussoftware/metronome#35a6cd3\n\n**Ethereum Contract addresses**\n\nContract | Address | Description\n--- | --- | ---\nAuctions | 0x9d9BcDd249E439AAaB545F59a33812E39A8e3072 | Use for purchasing newly minted MET\nProceeds | 0x68c4b7d05fAE45bCb6192bb93e246C77E98360e1 | Stores all auction proceeds\nAutonomousConverter | 0x686e5ac50D9236A9b7406791256e47feDDB26AbA | Use for exchanging MET/ETH after initial auction is over\nMETToken | 0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e | Use this address for MET ERC20 functions and third-party wallets\n\n**Ethereum Classic Contracts** \n\nContract | Address | Description\n--- | --- | ---\nAuctions | 0xF5269Caa54F1f776dD996Db35992D599e14d8a3B | Use for purchasing newly minted MET\nProceeds | 0x09ACED531359ceFfAD9759a9252E1D82E3557Eb2 | Stores all auction proceeds\nAutonomousConverter | 0x567EEBB6397cC8345e5A7eAE288994bf45FDF85B | Use for exchanging MET/ETC after initial auction is over\nMETToken | 0xA4d3A7b00056Cc5D8206b3b2983bfe0C107D90da | Use this address for MET ERC20 functions and third-party wallets\n\n### Development environment\n\n#### Installation\n- `npm install` to install all module dependencies\n- `npm test` to compile all the contracts and run the entire test suite agains TestRPC\n- `TESTFILE=test/\u003ctestfile\u003e.js npm run testrpc:single` to compile and run a single test file\n\n#### Parity Local Dev Chain Testing\n- `./deploy` to compile all the contracts and deploy them to a local parity dev-chain (this script will automatically start Parity)\n- `geth attach --preload js/metronome.js,js/const.js,js/initMetronome.js` to open a geth console and start metronome\n- `geth attach --preload js/metronome.js,js/const.js,js/initPostAuction.js` to open a geth console and start metronme (bypassing the initial auction)\n\nHere geth console commands to emulate auction transactions\n- `loadScript('js/testStart.js')` to load a geth test script for auction buys\n- call `pingBuy()` to simulate a buy (this will also initiate a buy every 30 seconds)\n\n## Test Suite\n\nSample code of how to interact with the smart contracts can be viewed in the Truffle tests.\n\n### Unit Tests (`./test`)\n\n- `shared` folder contains utility code shared amongs multiple test cases\n- `auctions.js` tests for the Auction contract\n- `deployment.js` tests for emulating actual deployment process for all the contracts\n- `erc-compliance.js` tests for ERC20 and ERC827 compliance\n- `fixedMath.js` tests for the Fixed Math contract (internal functions used by Metronome)\n- `formula.js` tests for the Formula contract (math for minting calculations)\n- `metronome.js` tests for Metronome use cases involving the AutonomousConverter\n- `mtnToken.js` tests for MET Token use cases (i.e., transfering tokens)\n- `owned.js` tests for Ownership operations (i.e., changeOwnership)\n- `pricer.js` tests for Pricer contract (internal functions used by Metronome)\n- `proceeds.js` tests for Proceeds contract to manage ETH funds\n- `smartToken.js` tests for internal SmartToken contract used by AutonomousConverter\n- `tokenLocker.js` tests used for time locking founder tokens\n- `tokenPorter.js` tests for exporting MET tokens to be imported to another chain\n\n### Timed Tests (`./timed-tests`)\n\nSimuating time proved to be a challenge, so we had to migrate a seperate suite of tests so that we can take advantage of `evm_increaseTime`.  This allowed us to better test targeted scenarios that depended on system time.\n\n- `ac.js` timed tests for AutonomousConverter\n- `auctions.js` timed tests for Auctions\n- `proceeds.js` timed tests for Proceeds\n- `subscriptions.js` timed tests for MET Token subscriptions\n- `tokenLocker.js` timed tests for TokenLocker withdraws\n\n## LICENSE\n[MIT License](https://github.com/autonomoussoftware/metronome/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomoussoftware%2Fmetronome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautonomoussoftware%2Fmetronome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomoussoftware%2Fmetronome/lists"}