On Tech, Business, Society.

Tag: software development Page 1 of 2

A Critical Perspective on Ethereum: Too Much Tinkering 

The tinkering ratio of output can be improved to yield more mainstream products

I’m writing this critique with a deep and long historical perspective on Ethereum because I want Ethereum to succeed better. I’d like its ecosystem to get stronger. I’d like its apps and services to be more useful. I’d like its end-user experiences to be on par with what the mainstream consumer expects. 

At a time when many other L1 blockchain infrastructures are struggling for growth, Ethereum has a chance to clean up and solidify its position as the preeminent blockchain infrastructure. 

Whether changes happen or not depends to a great extent on what the Ethereum community does or doesn’t do. There is a limit to what the market can do to pick up the pieces and innovate on top of what is handed to them.

This comes at a time when a large part of the Ethereum community is getting ready to re-assemble in Waterloo where the first ETH Global event took place six years ago. I participated in that event, wrote From Waterloo to Zug, Retracing Ethereum’s Journey and made a presentation chronicling the then-emerging Ethereum ecosystem.

I’d like to talk about what Ethereum can do better. So, I’m going to focus on some parts that could be improved, in order to maximize Ethereum’s potential. 

There is no need to extol Ethereum’s strengths, as you all know them. But sometimes your strengths create a weakness. So we can start there. 

One of Ethereum’s strengths is the diversity of its ecosystem and how much development activity there is around it. It is undoubtedly the most vibrant laboratory for blockchain innovation. 

However, that strength has become a weakness because there is too much TINKERING in that ecosystem. 

Tinkering is not bad because it can lead to great things as you iterate. But when I said “too much tinkering”, I meant on a relative basis. 

Tinkering as a ratio of output can be improved. This means that we don’t necessarily need less tinkering, but we need more tinkering that results in fully deployable and usable solutions. And not just at the technical level. We need more end-user applications with user-friendly, mainstream-appeal types of applications.

If your tinkering doesn’t produce an end result, do you know what happens?

Other chains take your half-baked ideas and they add the last mile to it, and they deliver something usable. Sounds familiar?

One of the drawbacks of too much tinkering is that we tend to forget about tuning the end-user experience. 

Of course, the first level of the Ethereum ecosystem is mostly comprised of developers, and that’s a great thing. Developers typically work on infrastructure or they work on services for other developers to build applications on, or they work directly on applications.

The part that needs the most improvement is the last part, the part that touches the end user.

If Ethereum wants to be in the hands of one billion users, it needs to think more about the importance of mainstream user experiences. The mainstream user wants SIMPLICITY first, and two or three clicks to get impressed and hooked. That challenge, by the way, doesn’t only apply to the Ethereum community. It does also matter for the entire blockchain industry. I recently wrote, What The Blockchain Industry Can Learn From the Popularity of Artificial Intelligence pertaining specifically to the user experience.

Here are two related parts where Ethereum can improve.

First, the Ethereum development ecosystem needs more product managers. Product managers focus on getting the product to the market in its most usable form. Sadly, sometimes, they are the ones who realize that at one point, you need to shoot the engineers in order to get the product out. Product managers obsess about the user experience, user flows and user interactions. Product managers understand how to lay out a roadmap and prioritize features rollout accordingly. 

Second, the L2 layers fragmentation is another strength-turned-weakness. L2’s have been undoubtedly beneficial to Ethereum’s scalability, but from a user perspective, the experience is not ideal, because of the switching friction. As a user, imagine if you had to switch browsers to access different parts of the web. It would be unthinkable, yet we ask Ethereum users to decide which L2 to choose from. Furthermore, we make them jump through hoops and take security risks to bridge from one network to another if they seek to move assets across L2’s. 

I don’t have a solution for this fragmentation, and some believe it’s not an issue, but I do think it is. Therefore, I’m just laying out the challenge to elevate its visibility and importance. When there is less friction, there is more adoption.

I realize that the Ethereum ecosystem is obsessed with an extreme form of decentralization at all levels of the stack. But that also creates challenges, because as you unbundle various pieces in order to decentralize the system, you then need to re-bundle everything to properly assemble a solution. Then, you need a lot of coordination and making sure that many parts work together at the same level of readiness and response, and that’s not always so easily achieved. 

This challenge was validated in Vitalik’s last essay, The Three Transitions where he advocates there are three essential capabilities that need to work together in Ethereum: L2 scaling, wallet security, and privacy. There is nothing new with these individual features as they were part of the early vision of the Ethereum blockchain. However, with increased decentralization, there are increasing degrees of complexity that compound when you start to implement these three prongs simultaneously. 

Ethereum is approaching its ten-year mark on its original inception. It’s time that we polish the ongoing tinkering in its base infrastructure and services so that apps can prosper on top of it. 

I’m looking forward to seeing more product managers and entrepreneurs drive the Ethereum ecosystem in addition to the base technology developers who are obsessed with technology tinkering. 

How Blockchain Applications Will Get Deployed

Field imageThe blockchain applications market is unravelling along a segmentation of activity that is spread along two sets of variables: private vs. public blockchains, and new vs. existing business models.

This combination of options yields 4 different outcomes.

First let me explain the segment variables, and then we’ll dive into their intersects.

Public vs. private

That’s typically the first order of decision choice for a given blockchain application. The key characteristic of public blockchains is that they are permissionless, which means that any user can join, either anonymously or with a known identity. Public blockchains are almost like the public Internet which is open and widely accessible. If you can get on the Internet, you will likely be able to get on a public blockchain, via a specific application.

As of now, public blockchains are not interoperable with each other, nor have seamless end-user flow characteristics between them. User identification and credentialing exist at the application level, not at the blockchain level. For example, a given application user is not a user of Bitcoin, or of Ethereum. They are a user of a certain software application that uses one of these two chains. A quasi-interoperability exists only at the currency exchange level, but in the near future, we will see common identity systems that could be used across blockchain applications (e.g. via Blockstack, uPort or Netki).

On the opposite side of public blockchains, private blockchain implementations are gaining popularity within organizations that are not comfortable relying on these new public infrastructures, for a variety of reasons. Private blockchains have pros and cons: they are faster at processing transactions, but as of today, they are more difficult to deploy and configure, in addition to the required complexity of integration within legacy systems.

New vs. Existing Models

This is an important distinction pertaining to the “purpose” of the given technology or application, and this classification  is not always obvious initially. When a given application is targeting an existing large organization, it is most likely that the technology is supporting existing models, and not disrupting them.

In my opinion, one of the most exciting potentials of the blockchain relate to creating new business models; whether in public or in private settings. In most of these cases, the new models don’t care for incumbents, because they are mostly on a disruption quest.

Supporting existing models doesn’t re-invent or disrupt an industry or organization, but it may make them stronger, more resilient, or give them a needed facelift. No wonder, the initial primary examples from this category are in the financial services industry where organizations are more interested in using the blockchain to streamline their processes than to disrupt them.

Analyzing the Intersections

We have 4 permutations:

  1. Creating New Business Models with Public Blockchains
  2. Creating New Business Models with Private Blockchains
  3. Supporting Existing Models with Public Blockchains
  4. Supporting Existing Models with Private Blockchains
In the following graph, I’ve entered a sample of company examples, for illustrative purposes only. Of course, there are many others. Blockchain Applications Segmentation

A few observations about this.

Few incumbents will succeed in deploying blockchain applications to enable new business models. The innovator’s dilemma will prevail. Even if they aspire to, they must first get their feet wet within their business boundaries.

In the new business models category, the starting point is zero users. Applications need to acquire users, one at a time. In many cases, a new user behavior is part of the experience, and there is a bottoms-up adoption that takes place.

If a startup is going after existing organizations as their key customers (Existing Models X Private segment), they need to realize that their success will be bound by the speed of implementation that these companies adopt.

The top left segment, “New Business Models X Public” is the equivalent of a new world, not unlike the Web economy’s. It will be the most difficult segment to grow initially because a large number of technology services that are underlying these applications are native to the blockchain, e.g. identity, payments, transactions validation, arbitration, decision-making, storage, messaging, etc. The bar is higher, but once all these elements are in place, then the sailing will be smoother.

When comparing these 4 categories, there is no good or bad blockchain applications segment. There are benefits to be realized for each one of them, although the type of innovation and implementation tactics will be different, and we need to keep an open mind that the boundaries between these segments will likely blur into the future.

]]>

The Crypto-Tech Platforms Landscape via a Network Effects Lens

I’m expanding on the Network Effects question that I introduced in my previous post, It’s Too Early to Judge Network Effects in Bitcoin and the Blockchain.

Some of my thoughts are in the below Tweetstorm, Is Bitcoin Really TCP/IP. But we need to realize (and accept) that the “One Currency-One Blockchain” paradigm is being challenged.

There are five variations on Crypto Technology Platforms that are emerging, as depicted in the following diagram: Screen Shot 2015-01-13 at 5.52.12 PM

And to complicate things further, some of the platforms like Truthcoin have two currencies: a native currency and Bitcoin. Others like Ethereum allow you to create your own cryptocurrency.

I’m going to ask some questions, without totally answering them, but you will see my bias towards Blockchain Apps as the ultimate Network Effects leveler, and not Bitcoin users as we see them today.

Yes, currency effects bring liquidity, but Blockchain effects bring the Apps. Both have users. Will currency network effects drive blockchain network effects, or are blockchain network effects more related to the blockchain apps specifically?

Is Cryptocurrency Fuel or Toll?

Keep in mind that today, 99% of the revenues in the Bitcoin network are mining related. But going forward, that ratio is expected to shift towards transactions.

How about Developers?

Although a cryptocurrency needs users, I think the important thing for a blockchain will be developers. They will ultimately be the ones creating these Apps.

How about Interoperability?

Eventually, we will see a degree of interoperability between blockchains, and we will see more inter-liquidity between Cryptocurrencies. Of course if Apps are on the same blockchain, it will be easier for them to interoperate, and there is some gain in network effects, but that may not be the dominant factor if blockchains interoperate nicely. And as for cryptocurrency liquidity, that will be achieved fairly soon via exchanges, allowing you to easily convert from one currency to another.

So, back to the main question:

Which Network Effects are more Important: Cryptocurrency or Blockchain?

]]>

Blockchain Apps: Moving from the Jungle to the Zoo

In a previous blog post, I made the somewhat exaggerated, but audacious statement that the advent of blockchain technology would prompt developers to rewrite just about everything in favor of blockchain-based architectures.

The reality is that decentralized apps are not for everything, and not everything fits a decentralized app paradigm. However, there are lots of applications that do fit the blockchain distributed paradigm, and that presents a good amount of opportunities for developers, creators, and visionaries.

So, I’m going to take a step back and start referring to Blockchain Apps, instead of decentralized apps because the blockchain is the common denominator, not decentralization. Decentralization can have degrees of subjectivity, and although it is a noble goal that I fully support, it might arrive in a stepwise, gradual manner. Therefore, decentralized apps are a subset of blockchain apps.

In this post, I’m going to describe and classify Blockchain Apps via a Blockchain-agnostic lens for two reasons: 1) to avoid the Blockchain multiplicity debate, and 2) to make the point that (most of) these types of applications should be possible, no matter which Blockchain, sidechain or other decentralized consensus model is chosen.

First let’s define what decentralization is, and what types of Apps fit the blockchain paradigm. Then, I’ll offer a simple, yet user-centric, generalized categorization of blockchain applications. It is the result of my own synthesis, and it is partially informed by David Johnston’s seminal paper defining the general theory of Decentralized Applications, Dapps, by Ethereum’s vision, and my regular interactions with developers and actors in this space, notably Vitalik Buterin.

Decentralization vs. Decentralized Organizations

It’s important to separate the characteristics of Decentralization vs. those of a Decentralized Autonomous Organization (DAO’s) in the context of blockchain applications. A DAO merges the political/governance principles of decentralization with the systems/architectural constructs of the blockchain decentralized consensus principles.

Decentralization:

  • There is no center.
  • Virtual governance and trust are distributed natively into the network.
  • Users have a voice that counts permanently, not just when it’s voting time.
  • Users own their personal data, and they can take it anywhere if needed.
  • Users are protected from central abuse, failures or control.
  • Decisions are based on decentralized consensus.
  • Transaction costs are low, or at least lower than center-led alternatives.
  • No single entity controls a majority stake in ownership, trust or governance.

Decentralized Autonomous Organizations:

In addition to the Decentralization characteristics above;

  • The DAO issues its own currency and intrinsically ties it to its own performance and operations.
  • The “autonomous” part is the highest hurdle and milestone to achieve; it means that the creators aren’t needed once the DAO is up and running.
  • Users stake is linked to “tokens” representing ownership, which is earned by performing some work on the network that is rewarded by these tokens, or by buying such tokens.
  • Every user contributes to the whole DAO’s well being, and helps to increase its value by virtue of their usage of the DAO services, as that is the DAO’s most native and atomic unit of value.
  • Transferring value is cryptographically secured and cannot be randomly enacted between parties that aren’t cryptographically trusted.
  • Key records are cryptographically stored in a public blockchain that adheres to a decentralized consensus protocol.

What kinds of Apps are suited for the Blockchain?

This comment by Vitalik Buterin depicts the criteria really well:

“Blockchains are useful for decentralized consensus on databases that update themselves according to non-commutative (ie. order-dependent) state transition functions.”

I will leave up to you to interpret this general classification, and if your imagination is running wild, that’s great, because you will therefore find many applications that fit the blockchain paradigm within your own world.

So, how do we classify the types of decentralized Apps that we might see which fit the blockchain paradigm?

The below graph and tables illustrate these classifications, and I will narrate them, sequentially.

Screen Shot 2014-12-30 at 9.05.16 PM

The currency related segment targets money transfers, payments, tips, or funding applications The end-user typically goes to an exchange or uses their own wallet to conduct such transactions, benefiting from transaction cost reductions, speeds in settlements, and freedom from central intermediaries. Today’s exchanges are centralized, but it’s likely we’ll see another generation of decentralized trusted exchanges. And although the current Bitcoin wallets today are “dumb” wallets, they could become smarter, via an ability to launch smart contracts.

Pegged services to the blockchain represent an interesting segment, because these Apps utilize the blockchain’s atomic unit which is a “value store” capability, but they also build on top of that with their unique off-chain services. For e.g. decentralized identity or decentralized ownership is a horizontal blockchain service, but it can be applied to any other vertical segment, such as for videos, music, or photography, just to name a few simple examples.

Smart contracts are small programs or scripts that run on a blockchain and govern legal or contractual terms on their own. They represent a simple form of decentralization. They will become available in a variety of application areas such as for wagers, family trusts, escrow, time stamping, proofs of work delivery, etc. In essence, they are about moving certain assets or value from one owner to another, based on some condition or event, between people or things. Smart contracts represent an “intermediate state” between parties, and we will trust these smart programs to verify and take action based on the logic behind these state changes.

Legal issues aside, a Distributed Autonomous Organization is “kind of” incorporated on the blockchain, because its governance is very dependent on the end-users who are part-owners, part-users, and part-nodes on that decentralized network. Key aspects of a DAO are that each user is also a “worker”, and by virtue of their “work”, they contribute to the value appreciation of the DAO via their collective participation or activity levels. Arguably, Bitcoin itself is the “uber DAO”.

Category

Protocol User

Frequency

Benefits

Examples

Currency

Exchanges, payment processors, miners, wallets.

Sporadic

Cost, speed.

Coinbase ChangeTip *any wallet* *any exchange*

Pegged Services

Web Business

Chronic

Openness, flexibility, new business models, network effects, empowered users.

OneName Mine Swarm Streamium OpenBazaar Assembly

Smart Contracts

Contracts Service Provider, Web apps, or end-user with self-service tools.

Episodic

Autonomy, cost, speed, irrefutability.

Mist (by Ethereum) SmartContract Secure Asset Exchange

Decentralized Autonomous Organizations

DAO itself

Habitual

User protection, user voice, user governance, transparency, self-regulation, sovereignty.

La’Zooz Storj MaidSafe OpenGarden Bitnation

There may be more categories perhaps…but that’s how I’m seeing them today. The examples given are only a sample.

Users Have Only Two Questions: What and Why?

For each segment, there’s a simple question in a user’s mind: “What is the benefit to me?”, and “Why should I participate?”. Blockchain App providers should be focused on answering these questions clearly and via compelling arguments.

Some kind of common vocabulary and understanding from both sides of the equation;- developers and end-users, will help market adoption. I’m afraid that technical superiority or arrogance alone will not help.

This was a market-centric view, not a technology stack view. For the sake of end-users, I’m proposing that we remain focused on these categories of applications as a way to focus our attention on what needs to happen for a successful evolution and adoption of blockchain-based apps.

This also serves a dual purpose. First, to motivate the Blockchain & Bitcoin developers to rise above their jargon. Second, it’s a message that, as end-users, if we are to be exposed to these new cryptography “animals”, we prefer the experience of a zoo-like environment where the animals are identified and mostly caged, docile or restricted, versus a jungle environment that is full of surprises, adventure, and unexpected uncertainty, which are annoying factors that make it a lot more difficult to appreciate, let alone be tempted to explore for the average consumer.

Although innovation and early markets typically start as messy creatures, maybe it’s time to put some order into the current cryptography jungle.

]]>

The Blockchain is the New Database, Get Ready to Rewrite Everything

via shutterstock via shutterstock[/caption]

If you understand the core innovations around the blockchain idea, you’ll realize that the technology concept behind it is similar to that of a database, except that the way you interact with that database is very different.

The blockchain concept represents a paradigm shift in how software engineers will write software applications in the future, and it is one of the key concepts behind the Bitcoin revolution that needs to be well understood. In this post, I’d like to explain 5 of these concepts, and how they interrelate to one another in the context of this new computing paradigm that is unravelling in front of us. They are: the blockchain, decentralized consensus, trusted computing, smart contracts and proof of work / stake. This computing paradigm is important, because it is a catalyst for the creation of decentralized applications, a next-step evolution from distributed computing architectural constructs.

Screen Shot 2014-12-23 at 10.30.59 PM

These concepts are computer engineering related. They are technical in nature, but they will have business implications, because they are capturing the imagination of developers and business visionaries who are rushing to create a new generation of applications.

But this is not just a computing phenomena. Decentralized applications are going to enable a decentralization trend at the societal, legal, governance and business levels. As I wrote earlier, There is a Race to Decentralize Everything and Give Power to the Edge of the Networks, so, let’s get ready to understand these concepts.

Decentralized Consensus (on or off Bitcoin’s Blockchain)

To fully understand the blockchain concept and the benefits of cryptography in computer science, we need to first understand the concept of “decentralized consensus”, a key tenet of the crypto-based computing revolution.

Decentralized consensus breaks the old paradigm of centralized consensus, i.e. when one central database used to rule transaction validity. A decentralized scheme (which the Bitcoin protocol is based on, transfers authority and trust to a decentralized virtual network, and enables its nodes to continuously and sequentially record transactions on a public “block”, creating a unique “chain”, the blockchain. Each successive block contains a “hash” (a unique fingerprint) of the previous code, therefore cryptography (via hash codes) is used to secure the authentication of the transaction source and removes the need for a central intermediary. The combination of cryptography and blockchain technology together ensures there is never a duplicate recording of the same transaction.

What’s important here is that with this degree of unbundling, the consensus logic is separate from the application itself, therefore applications can be written to be organically decentralized, and that is the spark for a variety of system-changing innovations in the software architecture of applications, whether they are money or non-money related.

You could think of Consensus as the first layer of a decentralized architecture. It is the basis for the underlying protocol that governs a blockchain’s operation.

The Blockchain (and Blockchain Services)

A blockchain is like a place where you store any data semi-publicly in a linear container space (the block). Anyone can verify that you’ve placed that information, because the container has your signature on it, but only you (or a program) can unlock what’s inside the container, because only you hold the private keys to that data, securely.

So the blockchain behaves almost like a database, except that part of the information stored, its “header” is public.

The data stored can be a token of value, or a crypto money balance. So, the blockchain acts as an alternative value transfer system that no central authority or potentially malicious third party can tamper with (because of the encryption process). It’s based on the public/private hegemony, which is the yin-yang of the blockchain: public visibility, but private inspection. It’s a bit like your home address. You can publish your home address publicly, but that doesn’t give any information about what your home looks like on the inside. You’ll need your private key to enter your private home, and since you have claimed that address as yours, no one else can claim a similar address as theirs.

The blockchain can also be seen as a software design approach that binds a number of peer computers together that commonly obey the same “consensus” process for releasing or recording what information they hold, and where all related interactions are verified by cryptography.

Smart Contracts (and Smart Property)

Smart contracts are the building blocks for decentralized applications. A smart contract is equivalent to a little program that you can entrust with a unit of value (as a token or money), and rules around that value. The basic idea behind smart contracts is that a transaction’s contractual governance between two or more parties can be verified programmatically via the blockchain, instead of via a central arbitrator, rule maker or gatekeeper. Why depend on a central authority when 2 (or more) parties can agree between themselves, and when they can bake the terms and implications of their agreement programmatically and conditionally, with automatic money releases when fulfilling services in a sequential manner, or incur penalties if not fulfilled?

Here’s a simple example of a smart contract to “sell 100 beanie babies” using a form of natural contract programming language, based on Ethereum.

Screen Shot 2014-12-27 at 1.28.05 AM

The starting point that you assume when applying smart contracts is that third party intermediaries are not needed in order to conduct transactions between two (or several) parties. Instead, the parties define and agree on simple (or complex) rules, and they embed them inside the transactions, enabling an end-to-end resolution to be self-managed between computers that represent the interests of the users. Smart properties are digital assets (or things) that know who their owners are. Their ownership is typically linked to the blockchain.

Trusted Computing (or Trustless Transactions)

When you put the concepts behind the blockchain, decentralized consensus and smart contracts together, you start to realize that they are enabling the spread of resources and transactions laterally in a flat, peer to peer manner, and in doing that they are enabling computers to trust one another at a deep level.

Whereas institutions and central organizations were necessary as trusted authorities, a certain number of their central functions can be codified via smart contracts that are rather governed by decentralized consensus on a blockchain.

Namely, due to the blockchain’s role as the unequivocal validator of transactions, each peer can proceed and trust one another, because the rules of trust, compliance, authority, governance, contracts, law, and agreements live on top of the technology.

If you fast forward to a not-too-distant future, smart contracts and smart property will be created, dispensed or executed routinely between consenting parties, without either of them even knowing that blockchain technology was the trusted intermediary.

Arguably, “trusted computing” on the Web is a key tenet of the new crypto-driven paradigm.

Proof of Work (and Proof of Stake)

At the heart of a blockchain’s operations is the key concept of “proof-of-work”, an integral part of Satoshi Nakamoto’s original vision for the blockchain’s role as the unequivocal authenticator of transactions. The “proof of work” is a “right” to participate in the blockchain system. It is manifested as a “big enough hurdle” that prevents users from changing records on the blockchain without re-doing the proof of work.

So, proof of work is a key building block because it cannot be “undone”, and it is secured via the strengths of cryptographic hashes that ensure it authenticity.

But proof of work is expensive to maintain (estimated cost of $600M per year for Bitcoin), and may run into future scalability and security issues, because it depends solely on the miners’ incentives which will be declining over time. An upgraded solution is “proof-of-stake” which is cheaper to enforce, but more expensive/difficult to compromise. Proof of stake not only determines who gets to update the consensus, but it also prevents unwanted forking of the underlying blockchain.

Edging Towards a Decentralized World

There will be a rush to develop new decentralized apps as a way to enable the decentralized world that we are edging towards.

To that end, business leaders and visionaries will need to learn a new vocabulary around crypto-related frameworks. Developers need to learn how to write decentralized apps that are enabled by blockchain technology. And end-users need to learn how to create or use smart contracts, e.g. as depicted via the Mist browser vision (Ethereum), which is a mix of marketplace discovery, management dashboard, and creation platform, all-in-one.

I recently outlined a comprehensive list of Bitcoin White Papers, and there were lots of protocols and proposals, but a protocol alone doesn’t make a robust development environment. We will need to see comprehensive development environments that support a full stack of capabilities and value-add components on top of the blockchain services and consensus engines.

The original Bitcoin blockchain technology had limitations as we started to push its limits outside of money related services and into the software applications realm, so we shouldn’t be surprised that the way forward is a world of multiple blockchains. Some of them will be working together, some competing with one another, and others just being benevolent to each other.

Despite all the excitement and high expectations surrounding blockchain technology, there will be important issues that need to be addressed pertaining to deployment, scalability, security, and robustness, and many of these challenges are being worked on today.

Decentralized Apps will come in different flavors, sizes and complexity levels, so we must be prepared for that variety, and we must see beyond the Bitcoin promise to be the Internet of money, and into the Blockchain’s promise to become a new development environment, just as Web development was the new paradigm back in 1996.

Update: Also read Part II and Part III Blockchain Apps: Moving from the Jungle to the Zoo It’s Too Early to Judge Network Effects in Bitcoin and the Blockchain.

]]>

Page 1 of 2

Powered by WordPress & Theme by Anders Norén