Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Matthews Lab
Search
Search
Appearance
Log in
Personal tools
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Events are arbitrary
Page
Discussion
British English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
When I first got into Bitcoin my main area of interest was in smart contracts. I used to marvel at how the blockchain could be used to eliminate trust between people and I’d despair whenever an OP_CODE was removed (making the former harder to do.) But that’s only because I didn’t understand one subtle quality of how a blockchain works: '''events are arbitrary.''' The blockchain really only has two qualities worth mentioning: # It can securely order events on a network of untrusted computers. # It defines an event called a transaction. The second quality is optional [0]. It just so happens that in the case of Bitcoin enough information is already included with the software to describe what a “transaction” means so that now its become impossible to separate the network definition of “the blockchain” from “a transaction” [1]. But if you understand why this is then you understand that the meaning behind events on a blockchain only ends up mattering to the people who use them. One interesting consequence of this is that a blockchain only needs to defines fault-tolerant ordering and it leaves the rest up to the user. When I first realized this it was a huge revelation. It meant that for the first time ever I no longer had to rely on the blockchain for enforcing my smart contract logic. '''Instead, I could simply implement my own rules as a separate consensus layer by ascribing the meaning behind events myself and then using transactions as a carrier for that information.''' So imagine I wanted to build a wallet that was using disabled OP CODES. No problem. I’ll define a new event and write the rules for what that event enables in any old programming language. And so long as everyone who uses that wallet has a copy of the same set of rules they will all agree on the outcome of events (which will be elegantly ordered via the blockchain.) So if, for example, I defined an asset for something ridiculous like Sudoku-locked transactions by saying that a group of meta-data within a TX stores a Sudoku-puzzle that accepts Sudoku-solutions to redeem them - everyone who uses that wallet will be able to understand said asset class without the blockchain itself needing to be expanded to “support” those rules. So, as long as a blockchain allows information to be written to it can be extended to support any kind of qualities you like. You can even implement Ethereum’s entire virtual machine on top of Bitcoin as a consensus layer and anyone who chooses to run your extension will benefit from that additional view of information. This is actually how Counterparty and Rootstock have managed to add such complicated features to Bitcoin but every blockchain developer can benefit from this same basic understanding. '''Tl; dr:''' The meaning behind information on a blockchain is whatever a program makes of it and this means that any kind of smart contract can be supported on any kind of blockchain so long as a program’s users all agree on using the same formulation of rules provided for an event. [0] You could build a blockchain that has no idea of a transaction at all. [1] … Which is probably a good thing because it turns out transactions are useful for controlling who gets access to publish on the blockchain.
Summary:
Please note that all contributions to Matthews Lab may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Matthews Lab:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)