Bitcoin (BSV) Token Protocol Showdown

Norway

Well-Known Member
Sep 29, 2015
2,424
6,410
This thread is based on the assumption that one single* token protocol based on Bitcoin (BSV) will be dominant globally in the future because of the network effect.

The goal of the thread is to figure out which protocol it will be as soon as possible with as much certainty as possible.

This forum at bitco.in is chosen because it has proven over time that it is neutral ground and that the format of the posts is more suitable for this kind of discussion than platforms like Twetch/PowPing/Twitter, Slack/Telegram/Keybase, Reddit, or mailing lists. **

I'm starting this thread because I want to predict which protocol will come out on top as soon as possible, and participants here will have the same advantage.


Keep it honest,
Stein H. Ludvigsen


-----------
* There may be two dominant protocols if they differ substantially in a fundamental way.
** Based on my experience with the thread Gold collapsing Bitcoin UP! started by @cypherdoc originally at bitcointalk.com and hosted/moderated by @Bloomie since Aug 28, 2015.

.
 
  • Like
Reactions: Bloomie and AdrianX

Norway

Well-Known Member
Sep 29, 2015
2,424
6,410
Let's jump right into a hot topic: UTXO-based Layer-1 Tokens on Bitcoin SV

Does it scale, or can we write it off as a serious contender quickly?

I have problems understanding how it really works. Is the state for all token holders stored in a single huge BSV transaction? And when a token transaction is done, a new huge BSV transaction is created to represent the updated state?

Most likely, I have got this wrong. But if I'm right, it seems obvious to me that this is not a token protocol that can handle over 1000 token transactions per second with millions of users.
 

LudwigVonRothoppe

New Member
Feb 25, 2018
5
7
Let's jump right into a hot topic: UTXO-based Layer-1 Tokens on Bitcoin SV

Does it scale, or can we write it off as a serious contender quickly?

I have problems understanding how it really works. Is the state for all token holders stored in a single huge BSV transaction? And when a token transaction is done, a new huge BSV transaction is created to represent the updated state?

Most likely, I have got this wrong. But if I'm right, it seems obvious to me that this is not a token protocol that can handle over 1000 token transactions per second with millions of users.
The state is handed from on transaction to the next using OP_PUSH_TX magic.
 
  • Like
Reactions: Norway

torusJKL

Active Member
Nov 30, 2016
497
1,156
A disadvantage of L1 tokens is that you need a locking script that includes checking the unlocking script such that it can't change the rules.

This means that both scripts become large.
 
  • Like
Reactions: eamesyi and Norway

Norway

Well-Known Member
Sep 29, 2015
2,424
6,410
No, per owner of a UTXO.
Right. So the different UTXO's are independent of each other.

I found this article on the OP_PUSH_TX technique:
"By having access to the transaction in the script itself you can check the transaction for script portions or check for other characteristics and force the script to fail if they are not present."
Steve Shadders
Sounds to me like the software (script) is kind of policing itself in each new iteration/copy/unlock-script. That the input script is policing the output script which is similar to itself. I will certainly need time to get my head around this! 🤪
I find it hard to believe that this can not be hacked.
Post automatically merged:

How can you describe a system, if the description itself is part of the system? 🤔
 
Last edited:

sCrypt

New Member
Jul 20, 2020
2
5
A disadvantage of L1 tokens is that you need a locking script that includes checking the unlocking script such that it can't change the rules.

This means that both scripts become large.
I wouldn't call it a disadvantage simply because it includes script locking/unlocking. By that argument, a normal bitcoin transfer (or any spendable bitcoin tx) is also disadvantageous since it uses P2PKH to lock/unlock.

Script becoming large is not necessarily an issue. Benefit has to be included when looking at the overall net effect. If the benefit overweights the transaction fee, there is no problem. I doubt anyone to send many transactions including non-trivial script if the net effect is negative. Also, what is "large"? What size is considered "large"?

Regarding OP_PUSH_TX, think of it as OP_CHECK_TX, similar to OP_CHECK_SIG. In the latter, a signature is required to unlock; in the former, a transaction is required. A preimage of the current transaction, to be precise.
 

Norway

Well-Known Member
Sep 29, 2015
2,424
6,410
Thanks for joining the conversation @sCrypt!

I find this concept of code checking and policing itself hard to understand and believe from an abstract point of view, but I'm willing to change my mind.

How would you hack your own example in "UTXO-based Layer-1 Tokens on Bitcoin SV" and create more tokens than was issued? Or do you think this is impossible?
 

sCrypt

New Member
Jul 20, 2020
2
5
No more tokens can be created after issuance, otherwise tokens can counterfeited at will. It is expected to be impossible, barring bugs in the contract.

OP_PUSH_TX does not allow script to check itself, since the "tx" pushed here is unsigned and does not include unlocking script. For more details, read our blogs.
 
  • Like
Reactions: Norway

eamesyi

New Member
G'day folks,

Firstly, it is our (I am speaking both on behalf of Tokenized and myself, where appropriate) contention that one token protocol will become the global standard for financial instruments and non-regulated utility tokens. However, I imagine there will be a few other token protocols that are more suited to/operate in certain niches.

I'd also like to prime your thinking with a quote from SJ to highlight the core design philosophy of the Tokenized protocol...something that I feel has not been well considered in all other token/smart contract protocols.

"You've got to start with the customer experience and work backwards to the technology." - Steve Jobs

Before I designed the Tokenized Protocol, I had spent quite a bit of time analyzing the potential value proposition of smart contracts, and Bitcoin/DLT/blockchain more generally. I had written a number of white papers on potential business models that used smart contracts/tokens, and spent a long time thinking through the customer experience from the perspective of all sorts of potential issuers and token holders, for the entire lifecycle of many common financial instruments. To summarize, I built the Tokenized Protocol with the customer in mind, not the technology.

Some important questions we think are worth asking when considering the pros and cons of various solutions:
  • What makes a 'smart' contract better than a traditional contract?
  • Are there opportunities to improve the way that contracting is done on a systemic level?
  • Why do we need Bitcoin for smart contracts?
  • Are there opportunities to improve the way that the global financial system operates?
  • What products/services can be disintermediated by a DLT-based smart contracting system?
  • How is AML/CTF managed effectively?
  • What are non-negotiables with respect to law?
  • How do regulators/government agencies interact with this system?
  • How do agents of commercial entities interact with smart contracts?
  • What is important to a token holder over the lifecycle of the contract?
  • What is important to an issuing entity over the lifecycle of the contract?
  • How low can you drive the costs of issuing, managing, and trading smart contracts?
  • Where should the scope limits of the token protocol be drawn?
  • What are the common features shared by various contracts across jurisdictions/legal systems?
  • Which terms and conditions can be interpreted/enforced by software? What cannot?
  • How can the design be optimized for performance? cost? simplicity? privacy? accountability? interoperability?
We have answered all of those questions, and more, and spent a lot of time balancing the choices/parameters. However, I don't believe it is in the company's (Tokenized) best interest to reveal all of our conclusions/reasoning at this point, but suffice it to say, we are confident our design is the optimal solution, and we look forward to competing in the market.

For bitcoin itself, a customizable locking script on a per-txn/output basis works beautifully. However, most financial instruments have a number of 'contract-wide' terms and conditions that issuers/token holders want to control...and those terms and conditions can and do change over time. To better understand this, I suggest having a look through a few shareholder agreements, trust deeds, and debenture agreements. I am sure you will quickly see all sorts of terms and conditions that affect/restrict ownership status and secondary trading. These types of terms and conditions are common to most financial instruments, and can be codified such that software can interpret and enforce. However, it requires an approach like the Tokenized Protocol to solve well, and L1 tokens will not be able to solve the problem in a competitive manner. Think about what happens when you need to amend a contract-wide term that has tens of millions, or even billions, of tokens in circulation... Now have a look at how the Tokenized Protocol would accomplish this task: https://tokenized.com/docs/protocol/actions#action-contract-formation

We suggest that a basic token with a basic contract-wide locking script, with most of the terms and conditions contained inside a referenced agreement (e.g. pdf), does not offer much value. It remains a largely manual task to issue, manage, and trade tokenized financial instruments. The real value of smart contracts is making all of the terms and conditions codified and 'smart', so that software can automate many of the routine administrative processes, and for the commercially relevant actions/events to be recorded to the blockchain by the agents that were involved.

To better illustrate our line of reasoning, I think it is worth thinking through one important and common example.

Example: When a private company has a requirement for all secondary transactions (shares) to be approved by the board of directors or shareholders. More info:

"Board Approval Right. A right of first refusal is a useful device for controlling ownership of stock only to the extent that the company or its assignee is willing and able to spend the necessary funds to purchase the shares. Otherwise, the shares can be sold to the proposed buyer. As secondary transactions have increased in popularity and valuations have grown, it has become increasingly common for bylaws to have a separate requirement for board of directors approval of any transfer, with only limited exceptions such as estate planning transactions." [from https://www.cooleygo.com/secondary-sales-of-private-company-stock/]
How would you specify that right/restriction in code? Perhaps a multi-sig script with each of the board of directors signing-off on each transaction? What happens if a director leaves the company? What about when the shareholders need to sign-off on the trade? Does that simply become a resolution via email that then gives permission to an admin key to approve a transaction? Not really an improvement over what we have today...

What about when a company goes from private to public? How do you coordinate contract-wide amendments when there are millions of token holders? Perhaps the shareholders can use custody services to manage admin like this because of the inherent limitations of such a system? I suggest that this is simply pushing the important terms and conditions/commercial actions, that can be codified, off-chain and into non-codified and manual processes using email, or the like....what a missed opportunity!!!

Who really cares about a non-custodial solution where the user controls the private keys to an on-chain share certificate, if the real record of ownership is contained in an email trail and pdf agreement...

What about an expiration date for a contract? Some tokens need an expiration date, but what happens if that expiration date needs to change?

What about the issuance of a different class of shares?

We have considered all of these questions and built the necessary features/functionality to allow for maximum accountability and for ALL of terms and conditions (where possible) to be on-chain and codified. Where any commercially meaningful action takes place, the Tokenized Protocol ensures there is one source of on-chain truth to record the agent(s) making the action, what the action is, and the resulting change to the state of the contract. And it can do so with software controlling their rights to do so. If you look carefully at our publicly available docs, you can see how we've solved these problems. Although there are a few things we haven't shared publicly just yet..

With all that said, we do see a lot of value in harnessing OP_PUSH_TX for reducing risk wrt to the operation of the smart contract agent, and some other components of the Tokenzied Protocol. As well as using sCrypt to improve the development experience for building locking scripts for our customers.

I also have a lot more to say on this topic that we can dive into, depending on how the conversation flows. I am also more than happy to answer questions/concerns/etc.

EDIT: a few typos/grammatical errors.
 
Last edited:

eamesyi

New Member
Let's jump right into a hot topic: UTXO-based Layer-1 Tokens on Bitcoin SV

Does it scale, or can we write it off as a serious contender quickly?

I have problems understanding how it really works. Is the state for all token holders stored in a single huge BSV transaction? And when a token transaction is done, a new huge BSV transaction is created to represent the updated state?

Most likely, I have got this wrong. But if I'm right, it seems obvious to me that this is not a token protocol that can handle over 1000 token transactions per second with millions of users.
I believe there are no issues with scaling. In all honesty, one could make a compelling smart contract protocol/financial system out of sCrypt-style tokens, SLP-style tokens, and Run-styled tokens, but one would need to add a standardized off-chain agent to all of them, and build out all of the metadata/framework to support codification of terms and conditions, and the required agents/oracles...in the same manner that the Tokenized Protocol currently works. However, the request-response style mechanism is the best solution IMO due to the accountability factor placed on all of the participating agents (smart contract agent, oracles, admin). As soon as you use an issuer/authority agent without the request-response model, then you have accountability issues and the potential for difficult to prove market abuse.

I believe that accountability/transparency is central to the value proposition of bitcoin/smart contracts, and it should be maximized where possible.
 
Last edited:
  • Like
Reactions: Norway

Clemens Ley

New Member
Jul 20, 2020
3
3
Interesting thread. I think that different token solutions will have different use cases. The strong points of Bitcoin Computer - the smart contract solution I am developing - are:
* it is programmable: smart contracts are written in Javascript so it's very easy to get started if you are a web dev
* it is very flexible: you can define arbitrary business logic in Javascript
* It's efficient: token transfer transactions are like normal bitcoin transactions, usually with one output that sends tokens and one change outputs to return change back to the sender. This makes sending tokens as cheap as sending normal Bitcoin transactions
* more than just a token solution: while Bitcoin Computer can be used to create tokens, it can do much more than that. It is really a system for building arbitrary applications, tokens are just one example. Imo it is easier to build applications on top of Bitcoin Computer than building on top of a database because there no impedance mismatch and no external server needs to be managed
* most importantly, it exploits one of the core strengths of Bitcoin as opposed to Eth. While the cost of executing a smart contract on Eth is proportional to the number of computational steps and the amount of memory used, the cost of executing a smart contract on Bitcoin computer is independent of the time and space complexity of the function called (this is because it is user validated). The cost for a function call on Bitcoin Computer is proportional to the size of the arguments. This is muuuuuuch cheaper.
* easy to install and use via npm: https://www.npmjs.com/package/bitcoin-computer
* based on a clear theoretical foundation

Most other approaches are cool too, but if you haven't already you should really check out https://bitcoincomputer.io/
 
Last edited:
  • Like
Reactions: Norway

torusJKL

Active Member
Nov 30, 2016
497
1,156
Also, what is "large"? What size is considered "large"?
I guess "larger than what we are used to today" would be the better way of expressing the impact.

I agree that as fees/byte become smaller this will become a non-issue.
 
  • Like
Reactions: Norway

brendan

New Member
Jul 20, 2020
13
18
I have a way to make tokens without script or OP_RETURN. It requires a validation layer, but that layer is not centralised and can be operated by the user or a trusted third party. I haven't yet published any details however the tokens are fully compatible with sCrypt and can be spent into an OP_TX style smart contract, a normal P2PKH or any other type of script...
The tokens can be used to create unique but fungible instruments that mirror today's physical bank notes in that they have serial numbers and a fixed denomination. i.e. a token is a $5 bill, and can be exchanged for five $1 bills as a fungible instrument.
Post automatically merged:

That is not the only application for them, but it is the one that I think is the most exciting for the medium to long term. Pushing all money into contracts countersigned by federal agencies is a surveillance nightmare. Keeping cash as something that can be exchanged peer to peer is important. Our tokens require validation only by nodes on the Bitcoin network. If you want a higher level of functionality such as countersignature by a bank or other third party, this can be done in Bitcoin script. It is not a condition of the token unless the issuer makes it that way.
Post automatically merged:

I just published a blog post about our tech: https://elas.digital/blog/f/elas-ledger-a-journey-of-understanding
but I have yet to publish anything about the tokens themselves.
 
  • Like
Reactions: torusJKL and Norway

Norway

Well-Known Member
Sep 29, 2015
2,424
6,410
Wow, there are some really interesting high-quality posts here! Thank you all for contributing.

@eamesyi, that's a solid pitch for Tokenized! I'm very glad you can share this much at this stage, and I understand that a complete system like Tokenized takes time to develop. You talked a little about central bank issued e-money at the BSV DevCon this weekend. Would this be like pseudonymous yet traceable digital cash, or more like M1 bank accounts in terms of privacy?

@Clemens Ley I was aware that you proved bitcoin script to be Touring complete in Tokyo, but I was not aware of BitcoinComputer! I think you're right that transaction cost matters even when small, especially for micro transactions. A company participating in millions of transactions per day will feel the cost. How can a user know for sure the correct state of an object in BitcoinComputer? Some kind of SPV/Merkle proof-solution, or do you have to trust the Bitcoin Service Provider (BSP) you are connected to?

@brendan Nice illustrations of your token's Directed Acyclic Graph (DAG) as a child of the bitcoin DAG and the relation to the blockchain graph. Looks like you're going for a more peer-to-peer solution. Would this protocol work if the sender is offline and sends it directly to the recipient?

@sCrypt Thanks, looks like my brain needs a lot more time to grasp the OP_PUSH_TX concept fully. 🤪 I have the same question for you as I had to Clemens Ley: How can a user know for sure the correct state of a token to prevent double-spend fraud? Some kind of SPV/Merkle proof-solution, or do you have to trust the Bitcoin Service Provider (BSP) you are connected to?
 

brendan

New Member
Jul 20, 2020
13
18
Hi Stein,
Yes, our transactions are just bitcoin transactions and all ownership rights are handled in the Bitcoin layer. Anything you can do with Bitcoin can be done with these tokens including nLocktime style transactions, payment channels, off-chain P2P negotiation style etc.
 
  • Like
Reactions: Norway

Clemens Ley

New Member
Jul 20, 2020
3
3
Great question @Norway. You are right, you have to trust the operator of the node you are connecting to. If you don't want to you can run your own node and configure Bitcoin Computer to connect to that node. By default, Bitcoin Computer connects to WhatsOnChain on BSV and to rest.bitcoin.com on bch, so that's who you have to trust if you don't want to run your own node.
 
  • Like
Reactions: Norway

brendan

New Member
Jul 20, 2020
13
18
I prefer the terminology 'run a node client' or 'a network listener' to describe systems that use BSV node software to manage processes that are outside of determining network consensus 😁
Within a short time it will be completely impractical to run a node client as a network interface so the next great leap will be systems that can listen for specific activities and hold a tailored subset of the ledger in a pruned block chain. These systems are emerging now, but most are tailored to a specific set of use-cases.
 
  • Like
Reactions: torusJKL and Norway