{"id":18017433,"url":"https://github.com/alexdovzhanyn/odyn","last_synced_at":"2025-03-26T19:33:56.266Z","repository":{"id":85130174,"uuid":"115698256","full_name":"alexdovzhanyn/odyn","owner":"alexdovzhanyn","description":"A prototype anonymous proof-of-work blockchain","archived":false,"fork":false,"pushed_at":"2018-02-17T15:22:48.000Z","size":71,"stargazers_count":16,"open_issues_count":5,"forks_count":6,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-22T07:51:19.391Z","etag":null,"topics":["bitcoin","blockchain","cryptocurrency","mining","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/alexdovzhanyn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2017-12-29T07:21:34.000Z","updated_at":"2023-03-23T03:26:50.000Z","dependencies_parsed_at":"2023-03-13T04:27:46.081Z","dependency_job_id":null,"html_url":"https://github.com/alexdovzhanyn/odyn","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdovzhanyn%2Fodyn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdovzhanyn%2Fodyn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdovzhanyn%2Fodyn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdovzhanyn%2Fodyn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexdovzhanyn","download_url":"https://codeload.github.com/alexdovzhanyn/odyn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245722812,"owners_count":20661830,"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":["bitcoin","blockchain","cryptocurrency","mining","ruby"],"created_at":"2024-10-30T04:23:11.438Z","updated_at":"2025-03-26T19:33:56.249Z","avatar_url":"https://github.com/alexdovzhanyn.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Packagist](https://img.shields.io/badge/license-MIT-blue.svg)]()\n\n# Odyn Blockchain\n\u003e A proof-of-work, anonymous blockchain written in ruby\n\nThis project aims to be a reference \u0026 full-fledged cryptocurrency/blockchain written in ruby. Eventually it would also serve as a building block for applications aiming to build their\nplatform on a blockchain/distributed ledger technology.\n\n## Setup\nFor use-case-specific setup instructions, see \u003chttps://github.com/alexdovzhanyn/odyn/wiki/Development\u003e. If you need further help or want to find out how to contribute,\njoin the [Gitter Channel](https://gitter.im/odyn-crypto/Lobby) and ask!\n\n### OS X \u0026 Linux:\n\n1. Download this repository\n2. Make sure you have ruby 2.4.2 or higher installed on your system\n3. Run `bundle install`\n4. Update the nodes.txt file in the node/ folder to have the external ip of your router, along with the port that you plan on running the nodes on. It is a good idea to use one 2, with the same IP, but with 2 different ports (9999 and 9998)\n5. Forward ports 9999 and 9998 on your router (this allows you to connect to other nodes)\n6. Run `thor node_launcher:port PORT_NUMBER` to start the node\n\n## Mining\nAfter following the setup instructions above, you should be ready to start mining. Before you start, visit the [wallet section](#wallet) and generate an address. Once you have an\naddress, copy the **public key** into the config/miner.yml file, where there is a setting for the wallet address. After doing this, make sure to **forward port 3333 on your router**.\nIf you don't forward the port, your miner won't be able to connect to the Odyn network. After forwarding the appropriate ports, you can run the miner by running `ruby miner/miner.rb`.\n\nWhen running the miner, it will catch up to the network by fetching blocks that have been mined in the past. This may take a while depending on how many blocks have been mined.\nAfter the miner finds all blocks that are existing, it will begin mining, and you'll see the hashrate outputted in the terminal, along with other diagnostic/informational data.\n\n## Wallet\nThe wallet allows you to interact with the odyn network from your command line. After following the [setup instructions](#setup) above, you'll be able to create your own wallet\naddress and start sending transactions or mining. The wallet is a full node, meaning it stores the entire blockchain locally and validates each block and transaction. This is the most\nsecure way to interact with the network, as you needn't have any trust in anyone else. There are currently no other implementations of the wallet, but if you'd like to create one\nthat interacts with the network, you're more than welcome to. In order to get the wallet to properly run and communicate with the network, you must **forward port 8998 on your router**.\n\nOnce you've forwarded the necessary ports, you'll be able to start up your wallet. In order to start the wallet, go to the root directory of the project and run `ruby\nwallet/wallet_node.rb`. This will cause the wallet to connect to a node in the network and attempt to fetch blocks that have already been mined, in effort to catch up. Depending on\nthe amount of blocks that have been mined by the time you set up your wallet, it can take a while to catch up. The wallet will output a status indicating how many blocks behind you\nare, along with which block it is fetching.\n\nAfter fetching all the blocks, your wallet will be ready to take input from you. You can view the commands available by typing `help` into the console provided for you. Upon startup,\nthe wallet will generate a private key for you, which will be located in the wallet/keys directory. Each keyfile name is labeled by their _public key address_. The wallet features a\nsecurity mechanism which causes it to discard keys that are older than roughly 24 hours. This is to protect transactions from being tracked based on one of your keys. The way this\nworks is that 720 blocks from when a key is generated, the key will be scheduled for deletion. **If the key has any balance left tied to it, it will not be deleted.** This way miners\nare able to mine to the same address, without needing to switch keys every 720 blocks.\n\n## Release History\n\n* 0.0.1 Alpha\n    * Blockchain operational\n    * Peer-to-peer communication implemented\n    * Mining to a wallet is possible\n    * Wallets created\n    * Transactions can be created and stored within the Blockchain\n    * Nodes verify blocks and transactions as they come in\n    * Implemented wallet key rotation algorithm v1 (ensures anonymity and non-trackability within the blockchain)\n    * Nodes can catch up with blocks they've missed while offline\n    * TODO: Handle forking. Forks will cause permanently different chains in the current release\n\n## Meta\n\nLike the project? Buy us some coffee!\n\nBitcoin: 1Lqw6hcM3qsEqMp3eQvLeohHxd796yfGj4\n\nEthereum: 0x81bb057f535b4ba77c95cdbbbf715cfddd605269\n\nDistributed under the MIT license. See ``LICENSE`` for more information.\n\n## Contributing\n\n1. Fork it (\u003chttps://github.com/alexdovzhanyn/odyn/fork\u003e)\n2. Create your feature branch (`git checkout -b feature/master`)\n3. Commit your changes (`git commit -am 'Add some fooBar'`)\n4. Push to the branch (`git push origin feature/master`)\n5. Create a new Pull Request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexdovzhanyn%2Fodyn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexdovzhanyn%2Fodyn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexdovzhanyn%2Fodyn/lists"}