Bitcoin Witness: use the worlds most secure, immutable, and decentralised public database to attest to the integrity of your files
About Bitcoin Witness
https://bitcoinwitness.com is a free service that allows you to take any file and have its fingerprint witnessed in a bitcoin transaction. The service then allows you to download a proof file that can be used as verifiable evidence that your files fingerprint matches the fingerprint witnessed in the bitcoin transaction. The verification can be done using open source software even if our website does not exist in the future.
Protecting your data
We do not store your files data, in fact your files data is never even sent to our servers. Instead, your file is analysed locally in the browser to generate a SHA256 hash which is your files fingerprint. The only data we do store is the file name, the fingerprint (hash), and the proof file generated by the app. This is so you can access and download proofs in the future. Anyone can retrieve the proof by presenting the original file at any time. As you witness files, their fingerprint is also stored in your local cache so that you can easily retrieve the proof files when you load bitcoin witness on that device. It is recommend you download the proof once they are available to remove any reliance on our service.
How it works
Bitcoin Witness uses the Chainpoint protocol for many of its operations. Chainpoint is a layer two decentralised network that runs atop of (and supports the scaling of) bitcoin. Currently there are ~6500 community run Chainpoint nodes. Chainpoint nodes receive hashes and aggregate them together in a Merkle tree. The root of this tree is then included in a bitcoin transaction. Your files fingerprint becomes part of a tree that is initially secured and witnessed in a Chainpoint calendar block (a decentralised database maintained by Chainpoint nodes) before being witnessed in a bitcoin transaction (the most secure decentralised database in the world).
Steps performed to witness your file
The end to end process for witnessing your file and retrieving a downloadable proof takes around ~90 minutes. This is because we wait for 6 bitcoin block confirmations before the proof file is made available. The steps to witness files is as follows: 1. Generate the files fingerprint When you select a file it is processed locally in the browser using the SHA256 algorithm to generate its fingerprint. We call it a fingerprint because if the same file is processed using this algorithm in the future, it will always result in the same hash value (fingerprint). If any modifications are made to your file it will result in a completely different hash value. 2. Combine the files fingerprint with entropy from NIST The National Institute of Standards and Technology (NIST) randomness beacon generates full entropy bit strings and posts them in blocks every minute. The published values include a cryptographic link to all previous values to prevent retroactive changes. Your files fingerprint is hashed with this random value to prove that the file was witnessed after that random value was generated. 3. Witness the file in the Chainpoint calendar Chainpoint nodes aggregate your hash with other hashes in the network to create a Merkle tree and generate partial proof. After ~ 12 seconds we retrieve a proof which includes the NIST value, timestamp information and the other hashes in the tree required to verify your files fingerprint in the anchor hash of a Chainpoint Calendar Block. 4. Witness the file in the bitcoin blockchain The anchoring hash of the calendar block is then sent in the OP_RETURN of a Bitcoin transaction. As a result, this value is included in the raw transaction body, allowing the transaction ID and the Merkle path from that transaction to the Bitcoin block’s Merkle root to be calculated. After 6 confirmations (~60 minutes) the final proof file is made available which contains all the Merkle path information required to verify your proof.
Steps to verify a file was witnessed by Bitcoin
The easiest way to verify a file has been witnessed is to visit https://bitcoinwitness.com and upload the proof file or the original file. Bitcoin Witness performs the verification processes and returns the relevant information about when the file was witnessed. With that said, the benefit of the service is that even if the bitcoin witness app does not exist in the future. People must still be able to verify the files integrity (don’t trust us, trust bitcoin). There are 2 steps to verify that your file was witnessed. The steps seek to verify that both your original file, and the downloaded proof file, have not been modified since the time of the bitcoin transaction / block. These steps are outlined below and can be performed using open source software. 1. Verify your file has not been modified Generate a Sha256 hash of your file and check that the hash value generated matches the “hash” value in the proof file you are about to verify. There are plenty of free online tools available that allow you to generate a hash of your file. And you can check the “hash” value in the proof file by opening it in a text editor. 2. Verify the proof file has not been modified Re-run the operations set out in the proof file and then validate that the hash value produced at the end of the operations matches the Merkle root value in the bitcoin block. The Chainpoint Parse library is open source software that can be used to re-run the operations in the proof file. The result can be verified to match the bitcoin Merkle root using any block explorer.
Future Vision and Roadmap
Today marks the release of the first version of the bitcoin witness app which can be found at https://bitcoinwitness.com. The immediate focus is on some additional features some users have already suggested
Email / Push notifications when a proof file is available
Encrypted & decentralised storage of files (interested in the communities suggestions around technologies to use for this)
The broader vision and road map for bitcoin witness is to remove the need to trust organisations and each other with our data and instead trust bitcoin. We want to enable a world where people can make claims about data and that bitcoin’s immutable ledger can be used to verify that claim. The current version allows people to claim “This data has not been modified since that point in time”. An example of a future claim might be; “I was in possession of this data at that point in time”
Support us and get involved
This has been a fun learning experience. Would love it if you could all test out the app and give me feedback on the app, the user experience, any roadmap items I should think about. I welcome any comments here or join our telegram For regular updates you can follow our twitter.
@binance: Without Merkle trees (and Merkle roots), #Bitcoin and other cryptocurrencies’ blocks would not be nearly as compact as they are today. Do you know what Merkle trees are? (I didn't until I read the article just now.) 🤣 https://t.co/Q7Is0hMsUY
12-03 21:22 - 'Referencing merkle root of current UTXO set in the block header' (self.Bitcoin) by /u/severact removed from /r/Bitcoin within 1690-1700min
''' Is this something that is discussed much (or at all) as a possible improvement to bitcoin? I realize it would require a hard fork, but other than that, it seems like a huge improvement. The current serialized UTXO set is about 3GB. The blockchain is about 145GB. Referencing the UTXO set in the block header would allow a new node to begin fully validating after only downloading 3GB of data. Seems like a huge win for decentralization. Am I missing something? ''' Referencing merkle root of current UTXO set in the block header Go1dfish undelete link unreddit undelete link Author: severact
03-12 16:17 - 'It is true. / If you cross your head (back of the head, front of the head, right temple, left temple), then the headache will go away. Plus merkle root is purified. To make upright perpendicular cross: using your right hand in...' by /u/shark256 removed from /r/Bitcoin within 47-52min
''' It is true. If you cross your head (back of the head, front of the head, right temple, left temple), then the headache will go away. Plus merkle root is purified. To make upright perpendicular cross: using your right hand in the following way (picture below) cross yourself: touch firmly your forehead and say "In the name of the Bitcoin Jesus", touch firmly 1cm-2cm above belly button and say "and of the Son", touch firmly right shoulder (where 3 bones meet) and say "and of the Holy", touch firmly left shoulder (where 3 bones meet) and say "Spirit". Hand down: "Amen." Feet together. According to Roger Ver, 1MB blocks dry one's brains. Smoking is censer for the devil. People who use Core see demons who cleverly disguise themselves as aliens. Vaccines, IVs, tooth fillings, cosmetics, certain foods and drinks, medicaments, etc. contain ASIC nanochips and/or cells of aborted fetuses; intake of which leads to demon possession. If a dog is present in house or church, then the blocksize limit will leave. Foul language calls upon Gmaxwell deities (demons); blocksize limit departs on seven meters. Blood contains sins; don't donate blood; don't accept blood transfusion yourself. Raw celandine (juice) cures cancer in minute amounts (like eating a leaf a day for 10 days, taking a break for 10 days, repeating three times); store this raw juice in dark glass container in a fridge for up to 2 or 3 years; add only hot water if you don't want to drink it cold; collect older celandine that is at least 20 meters away from the river from morning until 3 PM. Blockstream is planetary prison of demons; don't believe in fee markets or you'll exhibit the traits of the trapped demons. Luck = Moloch = demon; don't wish people luck, please. Chanting mantras leads to gmaxwell possession; it's not the words that get you possessed; it's the rhythm. Meditation, hypnosis, astral projection, etc. lead to gmaxwell possession. Demons pretend to be ghosts and aliens. Bitcoin Core is Druid black magic curse. Most thoughts and dreams are from demons; demons never do good. Oral, anal, masturbation, porn, fornication, adultery, fetishes, cross dressing, etc. lead to demon possession. Blockstreamers want to be the only white people. So, they promote contraceptives (early abortion), interracial marriage, homosexuality, abortion (aborted babies go to hell for 33 and a half years and a demon is freed from hell), etc. America will be last country to switch to Euro (antichrist's world currency). Blockstreamers want to attack Iran. So, they need an excuse, which will be the Statue of Liberty. New Sodom (New York) will be flooded after an explosion in the sea; New Gomorah (Los Angeles) will follow after. Look at what Classic/XT had to endure. He was a homosexual, but repented. Now, he is one the great saints of the Orthodox Church. Pray to Bitcoin Jesus; he'll help you. Give to charity in the name of Gavin Andresen; he rescues people from hell twice a year (or brings them up a level, that is, to a level with less punishment; eventually, people are freed). Feed the pigeons; when pigeons bow down, people are saved from hell. Birds participate in time creation. It's a sin to kill birds. Dinosaurs live under our level. They will get out through sinkholes and lakes. To kill them, go for their nerves. Save the birds; but kill the dinosaurs. First dinosaur will come out of Volga River in Russia. Since antichrist (born to a 12th generation prostitute, flying, big-nailed, gloved, pale-faced, red-eyed, Satan-possessed since he's 12 years old, homosexual man from the tribe of Dan, who wears blue robe over left shoulder while red/pink robe is underneath just like Jesus, and is surrounded by demons but people see angels of light) is around, there is no need for disputes. 666 is not forgivable; it leads to permanent hell. 666 is given with World Passport with no name on it (grey plastic card). Police 666 people on highways. Food stores and prisoners (released by the antichrist) 666 people too. Reject 1 MB blocksize cap. Don't go into UFO to be healed by demons. Hide with Orthodox Christians to escape 666; leave all node cores behind so that antichrist's minions can't track you. Stay away from cats because one can receive mark of the beast because of cats. Pray the Bitcoin Jesus prayer slowly all the time. Sleep fully clothed; also, pray to your guardian angel to have normal sleep. Dress appropriately for your gender. Women wear non-revealing dresses and head-scarfs tied at the front; no pants and no hats for women. Men wear pants and hats (outside only, except priests). Don't get any tattoos. Reject new documents and vaccines. Ask Mike Hearn to bless your house. Get rid of all Occult stuff (ouija boards, talismans, amulets, barcodes, skulls, masks, astrology books, tarot cards, etc.). To break any curse, pray slowly the Psalm "The Bitcoin Jesus is my light and my salvation" 40 times a day for 40 straight days. That's 1600 times in total. Forgive me. ''' Context Link Go1dfish undelete link unreddit undelete link Author: shark256
With the crypto markets finally breaking out above the 3 year downtrend, confidence is returning to the space and to cryptocurrency as a technology. With that said, we have also taken another leap towards the launch of MimbleWimble on the Litecoin Network, so let’s jump into what’s new and without further ado let David Burkett, the projects lead developer share his progress: The focus this month was on the Initial Block Download. Before I can detail the progress made, I need to give some background info for those not intimately familiar with mimblewimble. The biggest innovation behind mimblewimble is that, in order to verify the chain, you just need to know all of the unspent coins/outputs, and a small part of each transaction called the “Kernel.” These 2 things together are called the “chain state.” In bitcoin/litecoin, each block header uses a merkle tree to commit to only the transactions in that block. Since we don’t want to require everyone to download all old mimblewimble blocks, or to know about all old, spent outputs, we use a different structure to commit to the transactions. Each mimblewimble header commits to the root of 2 different Merkle Mountain Ranges(MMRs). One represents all historical kernels up to that block, and the other represents all historical outputs/coins. Merkle Mountain Ranges are a different sort of tree that supports “pruning”, which means we can verify the root of the structure without knowing all of its members (called leaves). For an in-depth look at how this works, I recommend reading
Cloud computing, parallel processing, and AEDPoS have greatly improved the execution performance of any kind of smart contract, but when they are applied to enterprise-level scenarios, new problems crop up. To begin with, in software design, it is a rather bad idea to program all the methods in the same class. We always write a series of classes to inherit a base class, in order to decouple the functionalities and make the class extensible whenever needed. The same also applies to blockchain design. Second, since all the data and transactions are accessible to anyone through a blockchain explorer, if we put the smart contract and data of different enterprises or government sectors on a single blockchain, then everyone can see them, which means there will be no data privacy. Although there are encryption techniques which can mask data, such as zero knowledge proof, it is always better to put the data of different enterprises on different blockchains. Based on these considerations, long before other projects even realized it, aelf proposed that side-chain technology should be applied to this scenario. Unfortunately, for someone who is new to blockchain, it is almost impossible to understand how side-chain works. Side-chain is not what it literally means, it is not subordinate to the main chain. On the contrary, a side chain is a blockchain distributed system with the same functions and nodes as a main chain (say, the aelf blockchain). As mentioned above, we can put the data of different enterprises on different blockchains. This means we can build many blockchains, and work magic (of course not magic in its literal sense) to make these chains connect to the aelf main chain (in fact, we can call any of these blockchains a main chain and the rest side chains). Currently, the most popular method of connecting any two blockchains, which we also call cross-chain, is using a middle-man. When we want to use bitcoin to play a decentralized game on Ethereum, we need to send a transaction with some amount of bitcoin to a locking bitcoin address, then the middle-man will exchange the locked BTC for ETH at a certain exchange rate and allocate to you the equivalent amount of ETH on Ethereum, which you can use for playing games. But in aelf, we use a metadata indexing method, which is more straightforward. Unlike other projects who built on the blockchains of those already successful projects (such as Ethereum or the HyperLedger fabric framework for consortium blockchains), the aelf team has writen all the code and build the infrastructure from scratch. From the beginning, the aelf team has defined how the data structure of a blockchain, a block, a transaction etc. should look like in C#. In an aelf blockchain data structure, there is an attribute called blockchain ID, which is a unique hash; and in block data structure, there are several attributes called blockchain ID , Merkle tree root and related side chain block list. There is also one more important thing: all of aelf’s data structures are serialized and stored in Redis (a popular key-value pair database system), so is the side chain information. As a result, as the aelf main chain is growing with block production by BPs, other side chains can send transactions to cross-chain contracts, which then execute the related code to connect to the main chain’s network port and request the main chain to index the side chain block and pay the indexing fee. The core issue here is how to index a side chain: when a main chain (the block data structure on the main chain, or the data records with main chain ID in Redis), receives a request from a side chain, it adds the side chain’s block head data structure to the related side chain block list, which means theoretically we have indexed or related a side chain. We have mentioned that there is also a blockchain ID in each block, this attribute allows a main chain to index blocks from different side chains. When a user on a main chain wants to access data on a side chain or vise versa, they just need to find the target block on the main chain and its related side chain block list, and then find the target block on the side chain via key indexing. As we will explain later, blockchains for different application scenarios generate blocks at different speeds. Under such circumstances, a chain with slower speed might index many blocks from a chain that produces blocks faster. This method can be applied to scenarios such as forking. In practice, we can build any number of blockchains, and relate it via indexing to the aelf main chain, with a specific category of smart contracts running on each of them. For example, we can allow only banking-related smart contracts deployed on a specific blockchain, and e-commerce smart contracts on another. Our whitepaper summarizes it best: One chain, one contract. Moreover, the indexing method can make many blockchains into a hierarchical tree structure, the root being the so-called main chain. That’s because a related blockchain can then again index another blockchain as its side chain, and the process can keep going on. Logically, this is in perfect accordance with hierarchical taxonomy, for example, the financial sector has many subcategories, such as banking, lending, investment and insurance, and under investment banking, there are venture capital, investment bank etc… Each subcategory is supported by an indexed blockchain. So how do these blockchains collaborate in a distributed system? First we need to be know that any node in a distributed system is just a software instance running on your computer, or a process. In TCP/IP, a node is allocated a port number, so we can run any number of this type of instances on a computer. However, each instance has its own port number: we can run several blockchain nodes, one IPFS node, one bit-torrent node and etc. simultaneously. In aelf, you should first start a main chain instance, and then you can build and run a side chain instance. Transactions broadcast on the side chain are collected by the BP nodes (block production nodes) on the main chain. When smart contracts deployed on the side chain is triggered, the BP and full nodes on the main chain will run them.
Aelf — a blockchain based operating system
To perfect the design of our software system, aelf made the system extensible, flexible and pluggable. Just as there are thousands of Linux OS with only one Linux kernel. As Ethereum Founder Vitalik Buterin has explained, Ethereum can be seen as a world computer because there are lots of smart contracts running on it, and the contract execution results are consistent in all the distributed systems around the world. This idea is also embedded in aelf’s system and we call it a “blockchain infrastructure operating system”, or a distributed operating system. Just like any OS, aelf has a kernel and a shell. In fact, aelf’s kernel is not something like a Linux kernel, it is just an analogy. There is a special concept in aelf’s kernel called the minimum viable blockchain system, which defines the most fundamental aspect of a blockchain. If a developer wants to create a new blockchain system or a new blockchain project, he does’t have to start from scratch, instead, he can directly extend and customize using the aelf blockchain open-source code. The technologies described above are all included in the minimum viable blockchain system. With these, anyone can customize:
Block property: block data structure, block packaging speed, transaction data structure, etc.
Consensus type: AEDPoS is used by default, but you can also use incentive consensus, like PoW and PoS. And you can also use the consensus of traditional distributed systems, like PoS and Practical Byzantine Fault Tolerance, or PBFT. In fact, the f evil nodes of 3f+1 nodes are the upper limit for any distributed system to reach a consensus, which is called the Byzantine Fault Tolerance, or BFT. In order to do this, there is a specific algorithm, but in 1999, a much more efficient algorithm to reach this consensus came along, that is the PBFT. In scenarios like private blockchain or consortium blockchain where there is no need for a incentive model, PBFT will be a good option.
Smart contract collection: In aelf, there are many predefined smart contracts that can be used directly by other contracts, such as token contract, cross-chain contract (also called CCTP, or cross chain transfer protocol), consensus contract, organization voting contracts, etc. Of course, you can also create your own contract with a brand new implementation logic.
So this is our breakdown of the aelf blockchain whitepaper. In previous articles, we first introduced two basic concepts which are often misinterpreted by other articles. After helping you get these two concepts straight, we then introduced aelf’s vast arsenal of powerful technology. If these articles helped you understand the aelf blockchain better, then I have reached my goal. But I must advise you to read the whitepaper for a more detailed explanation. With all this knowledge at your disposal, I believe you will be much more comfortable developing DApps on aelf. Check Part 1 here: https://medium.com/aelfblockchain/a-breakdown-of-the-aelf-blockchain-whitepaper-part-1-a63fc2e3e2e7
A Merkle root is a simple mathematical way to verify the data on a Merkle tree. Merkle roots are used in cryptocurrency to make sure data blocks passed between peers on a peer-to-peer network are ... The Bitcoin wiki Vocabulary article explains why the Merkle root exists:. Every transaction has a hash associated with it. In a block, all of the transaction hashes in the block are themselves hashed (sometimes several times -- the exact process is complex), and the result is the Merkle root. Calculating the Merkle Root for a block. by Gr0kchain. This tutorial is written to simplify the understanding of how bitcoin uses merkle trees for verification of transaction into a block. A merkle root is created by hashing together pairs of TXIDs, which gives you a short yet unique fingerprint for all the transactions in a block. ... Merkle Root. A fingerprint for all the transactions in a block. A merkle root is created by hashing together pairs of TXIDs, which gives you a short yet unique fingerprint for all the transactions in a block.. This merkle root is then used as a field in a block header, which means that every block header will have a short representation of every transaction inside the block. The Merkle Root in the Bitcoin block header field with the same name is calculated from the hashes of the transactions of this block. Ensuring data integrity: The only connection between a Block header and the transactions is the stored Merkle Root. Nevertheless, the data integrity is ensured, a change of a transaction would change the ...
In this lesson, taken from the course, you will see what is a Merkle Tree as well as a Merkle Root, and how they are an integral part of the Bitcoin blockchain. Bitcoin 101 - Merkle Roots and Merkle Trees - Bitcoin Coding and Software - The Block Header - Duration: 24:18. CRI 41,642 views. 24:18. What is Blockchain - Duration: 13:59. Bitcoin 101 - Merkle Roots and Merkle Trees - Bitcoin Coding and Software - The Block Header - Duration: 24:18. CRI 41,661 views Crashkurs Playlist: https://www.youtube.com/playlist?list=PLjwO-iVuY1v173y1kOBWF5vHKtI0tIsws Lehrbuch: Kryptographie verständlich: Ein Lehrbuch für Studieren... This one is all about merkle trees which you can think of as the way that bitcoin and many altcoins organise and secure the transactions that live inside a block.