{"id":21744306,"url":"https://github.com/oeo/bolt","last_synced_at":"2025-04-13T05:10:16.771Z","repository":{"id":195496665,"uuid":"618176996","full_name":"oeo/bolt","owner":"oeo","description":"bolt is a blockchain.","archived":false,"fork":false,"pushed_at":"2024-07-04T03:13:04.000Z","size":909,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T05:09:45.947Z","etag":null,"topics":["blockchain","libp2p-pubsub","nodejs","proof-of-work","rust","scrypt"],"latest_commit_sha":null,"homepage":"","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oeo.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-03-23T23:01:04.000Z","updated_at":"2024-07-04T03:13:44.000Z","dependencies_parsed_at":"2024-05-03T17:37:08.182Z","dependency_job_id":null,"html_url":"https://github.com/oeo/bolt","commit_stats":null,"previous_names":["genesishash/bolt","env2/bolt","oeo/bolt"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oeo%2Fbolt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oeo%2Fbolt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oeo%2Fbolt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oeo%2Fbolt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oeo","download_url":"https://codeload.github.com/oeo/bolt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665748,"owners_count":21142123,"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":["blockchain","libp2p-pubsub","nodejs","proof-of-work","rust","scrypt"],"created_at":"2024-11-26T07:11:04.469Z","updated_at":"2025-04-13T05:10:16.749Z","avatar_url":"https://github.com/oeo.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"**bolt** is a censorship-resistant, distributed proof-of-work blockchain. miners\nare rewarded in bolt for solving blocks, the native currency of the chain.\n\n- custom hashing function: designed to attempt to provide similar performance between cpu and gpu mining.\n- native chain currency: bolt has its native currency for rewarding miners.\n- proof of work: the blockchain is designed to inherit bitcoin's best characteristics.\n  - automatic difficulty adjustments and target block times.\n  - fixed supply cap and decreasing issuance of block rewards.\n  - the chain can be configured to use bolt's custom hashing function, sha256 or scrypt.\n\n### structure\n```\n├── assets\n├── blockchain\n│   └── src\n│       ├── data\n│       ├── lib\n│       │   └── peernode\n│       ├── models\n│       ├── routes\n│       ├── scripts\n│       └── tests\n├── bolthash\n│   ├── cli\n│   │   └── src\n│   ├── nodejs\n│   │   ├── lib\n│   │   ├── native\n│   │   │   └── src\n│   │   └── test\n│   ├── rust\n│   │   └── src\n│   └── wasm\n│       ├── pkg\n│       └── src\n└── scripts\n```\n\n### peer discovery\n\nthis project uses the [libp2p](https://libp2p.io/) library for peer-to-peer\ncommunication and peer discovery.\n\nthe main components involved in peer discovery are:\n\n- bootstrap nodes: these are predefined nodes that act as initial entry points to the network.\n- kad-dht: the kademlia distributed hash table (kad-dht) is used for efficient peer discovery and content routing. it allows nodes to find and connect to other nodes based on their node ids.\n- identify protocol: the identify protocol is used to exchange node information between peers. when two nodes connect, they exchange their node ids, addresses, and other metadata using the identify protocol.\n- gossipsub: gossipsub is a pubsub (publish-subscribe) protocol used for message propagation and peer discovery.\n\nwhen a new node is started, it performs the following steps for peer discovery:\n\n1. connects to the specified bootstrap nodes to join the network.\n1. participates in the kad-dht to discover and connect to other peers based on their node ids.\n1. exchanges node information with connected peers using the identify protocol.\n1. subscribes to specified topics using gossipsub and starts receiving messages published by other nodes on those topics.\n1. gossips about known peers and their subscribed topics to help other nodes discover and connect to them.\n\n### fair distribution\nwhen mainnet is launched anyone interested will be able to run a node and\nbegin mining blocks and will be eligible for the block subsidy reward.\n\nthere will be no preallocated tokens of any kind, no airdrop of any kind,\nand no fundraising or premine of any kind.\n\n### @todo\n- [x] add mocha test runners\n- [x] give node an automatic wallet/keypair in `$HOME/.bolt/identity.json`\n- [ ] implement redis mempool\n- [ ] implement trailing balance indexing (redis)\n  - this should sit n blocks behind the current block height and contain a redis snapshot of wallet balances\n- [ ] p2p\n  - [ ] standardize message format\n  - [ ] add a p2p chat for node runners\n  - [ ] p2p discovery\n    - [x] utilize ipfs pubsub implementation\n    - [x] lift the libp2p logic and write as service or wrap ipfs itself\n- [ ] create minimal block and mempool explorer\n- [ ] create standalone miner in rust using block templating\n- [ ] create standalone wallet\n  1. [ ] web\n  1. [ ] browser extension\n- [ ] dockerize node setup\n- [x] finalize transaction signing and validation\n- [x] finalize block validation\n- [x] enforce bolthash to produce sha256 like hex only outputs with same len\n  - [x] rebuild node module and test\n  - [x] rebuild cli tool and test\n  - [ ] fix webasm export\n\n### @eventuals\n- rust-based v8 smart contract executor\n  - allows newcomers to write in a familiar syntax while maintaining strict execution and computation limits for miners\n  - highly performant and circumvents nodejs' single-threaded nature\n\n### license\n\nmit license\n\npermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"software\"), to deal\nin the software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the software, and to permit persons to whom the software is\nfurnished to do so, subject to the following conditions:\n\nthe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the software.\n\nthe software is provided \"as is\", without warranty of any kind, express or\nimplied, including but not limited to the warranties of merchantability,\nfitness for a particular purpose and noninfringement. in no event shall the\nauthors or copyright holders be liable for any claim, damages or other\nliability, whether in an action of contract, tort or otherwise, arising from,\nout of or in connection with the software or the use or other dealings in the\nsoftware.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foeo%2Fbolt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foeo%2Fbolt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foeo%2Fbolt/lists"}