Tokenized Agent Setup Guide (1/5)
Updated: Feb 13, 2020
This is the first of a series of 5 blog posts that will explore the Tokenized smart contract architecture and take users through how to set up the necessary infrastructure to set up and run a smart contract and create a tokenized asset.
Tokenized is building something on a seriously different level to what I have seen from any other entrant to the token game. The executive team has a grand vision and is made up of A-grade members capable of creating something of colossal potential which behaves in a manner unlike anything business has seen before. Thankfully it is not something overly complicated and it can still be described using familiar words and concepts. To understand it we must first look at the ledger that Tokenized uses as its foundation.
The Bitcoin ledger is a globally distributed data structure managed by mining enterprises who seek profit through the provision of ledger access as a service. The Bitcoin Protocol determines a few underlying rules stipulating how users interact with the ledger, but for the intents and purposes of general use, it is reasonable to consider the ledger as a completely open place where anybody can record information that is useful to them.
An integral part of the ledger is the Bitcoin currency which can be exchanged on the ledger in Bitcoin transactions. These transactions use cryptographic hash functions and a highly secure Elliptic Curve Digital Signature Algorithm to protect the ownership rights associated with that currency.
In addition to the exchange of Bitcoins, the ledger can also be used to create tokenized representations of other asset types and allow those to be traded with the same levels of security as Bitcoins.
The fundamental difference between Bitcoins and other token types is that the bitcoin tokens are issued by Bitcoin miners to each other as rewards for working on building the ledger. They control the processes and protocols by which those tokens can be exchanged on the ledger and have the right as a collective to approve or not to approve your transaction. When something from the real world is tokenized, the tokens are issued by a controlling party. This might be a company who issues shares, a bank who tokenizes an asset or a venue who sells a ticket to a concert or an event. These tokens operate under a completely different set of rules to those which govern the exchange of Bitcoins on the Bitcoin SV network.
This is where application layer protocols are needed. An application layer protocol resides inside Bitcoin transactions, using the immutability and security of Bitcoin transactions as a means to manage the changing of ownership rights of real-world items. There are several application layer token protocols that exist for Bitcoin however none are as complete or as ready for managing the requirements of businesses operating in lawful, regulated environments as the Tokenized Protocol. The Tokenized Protocol is also inherently more efficient at scale than competing protocols and is also a fundamentally fairer protocol that can stop all technical forms of bad behavior that an issuing entity could be tempted to engage in, like market manipulation or ignoring some transactions while permitting others. The request-response mechanism of the Tokenized Protocol is not just fair and transparent for token holders, but represents a revolution in the way that regulators (and other interested parties) can monitor for compliance with rules and regulations.
The Tokenized Protocol
The introduction of the Tokenized Protocol means that users can now create notes on pages owned by smart contracts in order to manage the ownership rights of tokens. The smart contract uses these ledger records to manage its tokens. The issuer owns the smart contract, and dependent on the rules of the contract, has the power to send instructions to the agent that override requests from users. To police the use of these features, the total history of every smart contract can be audited by third parties.
Tokenized also have a sophisticated encryption scheme that allows the contents of a contract to be kept private despite being stored in public. Every request to a smart contract is written to a contract’s address for evaluation and the responses from contracts come from those same addresses and these contract addresses will serve as anchor points for business conducted by the corporations of the future.
The Tokenized Smart Contract Agent
The Tokenized Smart Contract Agent is an autonomous software application that runs on a server requiring only a node with access to the Bitcoin network. The contract's agent can be operated by the entity issuing a smart contract, or by a third-party provider as a service. The only means to interact with an agent is by writing instructions to the Bitcoin ledger. They do not take instructions via Internet Protocol giving them a very small attack surface.
Currently, the smart contract agents require users to run a BitcoinSV node that communicates with the Tokenized Spy Node system. This is a lightweight network monitor that the agent uses to filter network traffic to see transactions being sent to it by users. Longer-term, Tokenized plans to introduce an API service for spy nodes which will remove the need for users to run their own nodes, significantly reducing the operational overhead in a scaled Bitcoin scenario.
Entities are at the core of the Tokenized system. Entities are defined during the establishment of a smart contract and are used to build out on-chain representations of real-world legal entities and ownership structures, like public and private companies, partnerships, trusts, and even government agencies, enabling organizations to define a company structure detailing the people of importance to their operation such as directors, lawyers, accountants and more.
Tokenized smart contracts are agreements established between a real-world entity (e.g. a company or individual) and an agent that outlines a set of data points and rules which the agent will use to govern interactions with the users of that smart contract. This includes data points describing the entity setting up the contract and outlines rules such as limits on token issuance, voting rights, and the means used to manage ownership of the contract and the assets it manages. This information is sent to the agent inside on-chain Tokenized request actions, which the agent evaluates and acknowledges in its own on-chain responses.
Smart contracts can be used to manage one or many asset types for their owners and can be established in parent-child relationships allowing for complex contract trees to be established. This is useful for corporations who might have a single umbrella contract to manage the company’s shares, the board of directors and more, with sub-contracts existing for diverse purposes such as delivering a user interface needing tokens, managing logistics or warranty and more.
Assets controlled by these agents can be anything from movie tickets to shares, tokenized real estate or even national currency issued by central banks. Each asset is created with a set number of tokens to represent it. Assets can be fungible (many identical tokens) or be non-fungible (single unique token) and represent almost anything that we use to exchange goods and services in the real world.
Everyone with access to Bitcoin will now be able to integrate the rapid, immutable,
and low-cost exchange of all kinds of tokenized goods and services.
Ownership rights can be conferred upon goods, services, and equity and then managed by the token issuer in a simple and transparent way. Each contract is programmed publicly through on-chain actions detailing its purpose, who owns it, how its voting rights are managed and more.
All the details needed to build a legal foundation for the establishment of an entity that holds and manages tokenized ownership rights can be established in a Tokenized smart contract.
Download and install Golang
Before you can use the Tokenized Smart Contract Agent you will need to install Golang. Golang is available for all major operating systems.
In MacOS, the following process can be used to install Golang:
Visit www.golang.org and download the latest MAC PKG file. Open this and follow the prompts to install the Go tools. This package installs your GO distribution to /usr/local/go and set your PATH environment variable. You’ll need to restart any terminal windows you have open for the settings to take effect.
In our Linux example, I used the following process:
Install Linux upgrades
These commands will apply the latest updates to the Linux subsystem:
$ sudo apt-get update
$ sudo apt-get -y upgrade
This command will download version 1.13.5 of Golang, but you should check the www.golang.org website to make sure you are getting the most up-to-date version:
Usually, they are consistent in their naming so it suffices to simply update the version number in the file name.
Extract and install
Now that you have downloaded Golang, use the following command to extract the archive:
$ sudo tar -xvf go1.13.5.linux-amd64.tar.gz
And now move the files into the usr/local folder:
$ mv go /usr/local
Setup the Go environment
Now that Go is installed, you will need to make some modifications to your Linux environment by setting the GOROOT, GOPATH and PATH variables in your ~/.profile file.
To edit, I used nano:
$ nano ~/.profile
Add these three lines to the end of the file (feel free to change the GOPATH to the location you wish to use for your projects):
Now that you have edited your .profile file, each time you open a new command line you can load the updated settings by typing:
$ . ~/.profile
Ready to go
And with that, your environment should be ready to go!
Tokenized’s James Belding takes the stage at CoinGeek Toronto Conference 2019
Using Tokenized – A beginner’s guide
Today we have released a set of guides that go through the basics of setting up a Tokenized smart contract agent on your local machine, building a smart contract, and defining, issuing and distributing a set of assets. They will be officially published on a weekly basis as our Faia blog.
Here are the Tokenized series blogs
Blog 1 You're reading it.
About Brendan Lee, Head of Technology
Mr. Lee's career to date has been focused on increasingly senior roles within industrial design, automation, and control, focusing on software design and implementation. Most recently, Mr. Lee was the Bitcoin Engineering Lead for the Tokenized project team who developed the Tokenized protocol. The Tokenized protocol is a comprehensive, regulation-friendly solution for businesses to create tokens for real-world assets on the BSV blockchain.
Subscribe to our FREE weekly newsletter to follow our journey into
building a business at the intersection of community & technology.