Have you ever timestamped?
Being more precise, did you ever create an OpenTimestamps proof all by yourself?
To do so you need to send a bitcoin transaction incluing some extra data which are a commitment to, let’s say, your files
Then for each file you should create a
.ots receipt containing the proof linking the file to the merkle root in the block header, using the OpenTimestamps standard.
This is not extremely easy to do, you should be familiar with the OpenTimestamps libraries and a software to create custom bitcoin transactions. While trying you may fail, wasting some bytes in your transaction or even worse some of your bitcoins. But now there is an easy way: you can timestamp your files with your transactions using this Electrum plugin.
Note: except for educational purposes or particular cases, creating a timestamp in this way is the dumb way to do a timestamp. The smart way is using a public calendar service: it’s cheaper, requires less efforts and burdens less on the network.
In this launch phase the plugin is not super easy to install or download, we plan to make this easier after more reviews and tests. In addition we tried to make it the less invasive possible, we used the existing hooks and we even haven’t (yet) added any fancy OpenTimestamps picture. In the next phases we will make some steps to provide a nicer user experience.
To use the plugin you need to install a custom version of Electrum including the plugin.
The instructions are adapted from Electrum README and it is assumed to run on Linux.
(For Mac OS X use
brew install instead of
sudo apt-get install, instead of
pyqt5 and check that it is using
python3. This should do the job.)
Electrum is a pure python application. If you want to use the Qt interface, install the Qt dependencies:
$ sudo apt-get install python3-pyqt5
Install plugin requirements:
$ pip3 install opentimestamps
Clone the Electrum source code, then include the plugin files:
$ git clone https://github.com/spesmilo/electrum.git $ git clone https://github.com/LeoComandini/electrum-timestamp-plugin.git $ cp -r electrum-timestamp-plugin/timestamp electrum/plugins $ cd electrum $ python3 setup.py install
Compile the icons file for Qt:
sudo apt-get install pyqt5-dev-tools pyrcc5 icons.qrc -o gui/qt/icons_rc.py
To run on
To run on
$ ./electrum --testnet
Timestamp your files with your transaction
Enable the plugin
Plugins and tick the
Close and restart to Electrum to abilitate the plugin.
Visualize the timestamps history
Add new files
Click on the
Add New File button and select the file yo want to timestamp.
Create and broadcast a bitcoin transaction including the timestamp:
Send Tab select outputs, amount, fee
(select a fee > 1 sat/byte)
Timestamp, this write a commitment to your file(s) in the transaction
Confirm the changes in the transaction (if fee is too low the transaction won’t be relayed or mined)
Sign and broadcast the transaction (click on
Note: the hash value in the red box is the Merkle root resulting from the hashes of the files along with nonces to guarantee extra privacy.
Check the timestamps history
Tools -> Timestamps…, the file now is an pending state.
If you try to click on
upgrade nothing will happen,
to create your timestamps you need to wait to have the transaction is confirmed (6 blocks) so reorgs won’t be an issue.
After 6 blocks clicking on
upgrade will do something, your timestamps are now completed.
Your timestamp proofs are next to the file you timestamped.
Verify your proofs
Use the OpenTimestamps client (better) or go on opentimestamps.org (suboptimal, you are trusting the website) to verify your proofs.
With this plugin you can easily timestamp your files while doing bitcoin transactions with Electrum.
While it may be sometimes useful, it is better to use a calendar.
However this could become relevant if sign-to-contract or external timestamping becomes a thing. Stay tuned.