Tag Archives: bitcoin blockchain mirror

Bitcoins: How to create a Blockchain Wallet account?

Bitcoins: How to create a Blockchain Wallet account?

What is Blockchain Wallet?

Block chain is an online Bitcoin Wallet that permits any people to transfer bitcoins as a payment to any part of the world in just as effortless as one – two – three steps.

It is a free service which makes lighter to send and receive your Bitcoins without the need of Bitcoin client software.

It was very first released in August two thousand eleven that maintains the list of records involved in the bitcoin transaction.

Every user need to connect to a bitcoin network in order to transfer bitcoins. It is strongly protected by cryptography and hence it is merely unlikely to crack.

If you want to know more about block chain wallet then you can read what Wikipedia says about Block Chain.

Here this article written to explain you about how to create a block chain wallet account?

It is just like your local bank account where you create a savings account and store your money. Same way create a free account with Block Chain wallet and store your Bitcoins.

You can convert the BitCoins to cash at any time you want or make a payment for any services you used.

Creating an account with block chain will takes only a few minutes of your time once you are ready. Let me explain in detail how to register a free blockchain wallet account.

Steps to create Blockchain Wallet account

You should create this account in order to take part in Bitcoin transactions.

Please go after this step by step instructions keenly and create your account.

STEP 1: Open blockchain.info website

Open blockchain.info. Choose Wallet option from the list of navigation menu located at the top of the web page.

Now, You need to create a Fresh Block Chain Wallet account right, so just click “Create A Free Blockchain Wallet” button .

The next browser explosions the form, and it asks for Email and Password. Use your primary Gmail ID and create a fresh password for this account . Use Uppercase, Lowercase alphabets, Numbers, Special characters and make eleven – fifteen characters as your password .

Hooray, your Block Chain wallet account created. Just press Get embarked to expose your dashboard which will come in the next screen.

In the next browser, click “Get Began” to view your fresh Wallet Dashboard.

Here’s your own block chain wallet account. Now it shows zero BTC. Here where you are ready to make thousands of dollars in cash. Nosey to know how? Learn how to earn money from Bitcoins?

If you open a savings account in your bank, you will get an 16digit number that is unique to identify your account number. Same process here too, just click “Receive” button to get your thirty four digit Alpha Numeric characters unique BTC address and it looks like 113NXWvi. FKMtwDAmBaDqgs7o.

Do not leave behind to verify your Email ID associated with your block chain wallet. Open your Gmail ID and you may find the mail like this picture.

Now it’s time to secure your account. Get your backup phrase which will be used in case of your password was lost or any un-authorised switches. Click on “Backup Pharse” and it will ask for your account password.

Come in the password and print the sheet. Now press “next” will display the very first four word of your back up phrase. Write the same in the printed sheet or some where else.

Click Next Four Words and write down next and same. It has totally twelve word phrases to note down. Make a copy somewhere and keep it safe.

Finish the task and click Finish.

Create a password hint to reminisce your password if you left behind at the login process. Finish all the three to finish Level one security process to protect your block chain account.

Now, go to Level Two: of your account protection. Need to link a mobile number to your wallet account and enable 2-Step authentication factor which you will already know and is similar to Gmail 2-Step authentication.

Level three safety: Blocking IP that suspects to be part of anonyms from TOR netwrork.

Super, Awesome you by yourself created a block chain wallet account and got your unique BTC address.

Securely write your Back up phrase, Unique Wallet identifier used inplace of login email iD, password etc.

Now its time to work in Faucet sites and commence earning Bit Coins. Accumulate your coins in this secured wallet and use later to purchase any thing or transfer to someone and get cash instead.

ALL THE BEST , Lets commence working in BTC sites and make giant money. Earn Rs.50000 every month without any investment.

How to Earn Bitcoins?

So, now you are ready with your Blockchain account setup. Online Home Income have provided a list of Bitcoin paying sites in our other article for your convenience.

1.) Visit the link very first and then read the article to understand the uses of Bitcoins.

Two.) Scroll to the bottom of the article where you will get the list of paying sites. Register all sites at once using your BTC address.

Trio.) Every site will have their payout system which I have mentioned already. So read and know by yourself.

Bitcoins are indeed an effortless way to earn money online but it needs your fidelity and hard work to achieve the high level of success. We will update sites frequently and may delete some sites because not all online sites are genuine and will pay for a long time.

If we suspect any site we recommend has stopped paying or either delaying payments we will put those sites on our observe list. Later after some time we will either eliminate or proceed work with them.

As my valuable site visitor, you are requested to visit this page often repeatedly for updates.

Sharing is caring.

⇒ Online data entry jobs — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

⇒ Form packing online work — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

Are you serious in Making Money Online?

Join my free Email training program to get detailed information.

I personally training you to earn money online without investment.

Bitcoins: How to create a Blockchain Wallet account?

Bitcoins: How to create a Blockchain Wallet account?

What is Blockchain Wallet?

Block chain is an online Bitcoin Wallet that permits any people to transfer bitcoins as a payment to any part of the world in just as effortless as one – two – three steps.

It is a free service which makes lighter to send and receive your Bitcoins without the need of Bitcoin client software.

It was very first released in August two thousand eleven that maintains the list of records involved in the bitcoin transaction.

Every user need to connect to a bitcoin network in order to transfer bitcoins. It is strongly protected by cryptography and hence it is merely unlikely to crack.

If you want to know more about block chain wallet then you can read what Wikipedia says about Block Chain.

Here this article written to explain you about how to create a block chain wallet account?

It is just like your local bank account where you create a savings account and store your money. Same way create a free account with Block Chain wallet and store your Bitcoins.

You can convert the BitCoins to cash at any time you want or make a payment for any services you used.

Creating an account with block chain will takes only a few minutes of your time once you are ready. Let me explain in detail how to register a free blockchain wallet account.

Steps to create Blockchain Wallet account

You should create this account in order to take part in Bitcoin transactions.

Please go after this step by step instructions keenly and create your account.

STEP 1: Open blockchain.info website

Open blockchain.info. Choose Wallet option from the list of navigation menu located at the top of the web page.

Now, You need to create a Fresh Block Chain Wallet account right, so just click “Create A Free Blockchain Wallet” button .

The next browser explosions the form, and it asks for Email and Password. Use your primary Gmail ID and create a fresh password for this account . Use Uppercase, Lowercase alphabets, Numbers, Special characters and make eleven – fifteen characters as your password .

Hooray, your Block Chain wallet account created. Just press Get embarked to expose your dashboard which will come in the next screen.

In the next browser, click “Get Began” to view your fresh Wallet Dashboard.

Here’s your own block chain wallet account. Now it shows zero BTC. Here where you are ready to make thousands of dollars in cash. Nosey to know how? Learn how to earn money from Bitcoins?

If you open a savings account in your bank, you will get an 16digit number that is unique to identify your account number. Same process here too, just click “Receive” button to get your thirty four digit Alpha Numeric characters unique BTC address and it looks like 113NXWvi. FKMtwDAmBaDqgs7o.

Do not leave behind to verify your Email ID associated with your block chain wallet. Open your Gmail ID and you may find the mail like this pic.

Now it’s time to secure your account. Get your backup phrase which will be used in case of your password was lost or any un-authorised switches. Click on “Backup Pharse” and it will ask for your account password.

Inject the password and print the sheet. Now press “next” will display the very first four word of your back up phrase. Write the same in the printed sheet or some where else.

Click Next Four Words and write down next and same. It has totally twelve word phrases to note down. Make a copy somewhere and keep it safe.

Accomplish the task and click Finish.

Create a password hint to recall your password if you left behind at the login process. Finish all the three to finish Level one security process to protect your block chain account.

Now, go to Level Two: of your account protection. Need to link a mobile number to your wallet account and enable 2-Step authentication factor which you will already know and is similar to Gmail 2-Step authentication.

Level three safety: Blocking IP that suspects to be part of anonyms from TOR netwrork.

Super, Awesome you by yourself created a block chain wallet account and got your unique BTC address.

Securely write your Back up phrase, Unique Wallet identifier used inplace of login email iD, password etc.

Now its time to work in Faucet sites and begin earning Bit Coins. Accumulate your coins in this secured wallet and use later to purchase any thing or transfer to someone and get cash instead.

ALL THE BEST , Lets commence working in BTC sites and make ample money. Earn Rs.50000 every month without any investment.

How to Earn Bitcoins?

So, now you are ready with your Blockchain account setup. Online Home Income have provided a list of Bitcoin paying sites in our other article for your convenience.

1.) Visit the link very first and then read the article to understand the uses of Bitcoins.

Two.) Scroll to the bottom of the article where you will get the list of paying sites. Register all sites at once using your BTC address.

Three.) Every site will have their payout system which I have mentioned already. So read and know by yourself.

Bitcoins are indeed an effortless way to earn money online but it needs your allegiance and hard work to achieve the high level of success. We will update sites frequently and may delete some sites because not all online sites are genuine and will pay for a long time.

If we suspect any site we recommend has stopped paying or either delaying payments we will put those sites on our see list. Later after some time we will either eliminate or proceed work with them.

As my valuable site visitor, you are requested to visit this page often repeatedly for updates.

Sharing is caring.

⇒ Online data entry jobs — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

⇒ Form packing online work — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

Are you serious in Making Money Online?

Join my free Email training program to get detailed information.

I personally instructing you to earn money online without investment.

Bitcoins: How to create a Blockchain Wallet account?

Bitcoins: How to create a Blockchain Wallet account?

What is Blockchain Wallet?

Block chain is an online Bitcoin Wallet that permits any people to transfer bitcoins as a payment to any part of the world in just as effortless as one – two – three steps.

It is a free service which makes lighter to send and receive your Bitcoins without the need of Bitcoin client software.

It was very first released in August two thousand eleven that maintains the list of records involved in the bitcoin transaction.

Every user need to connect to a bitcoin network in order to transfer bitcoins. It is strongly protected by cryptography and hence it is merely unlikely to crack.

If you want to know more about block chain wallet then you can read what Wikipedia says about Block Chain.

Here this article written to explain you about how to create a block chain wallet account?

It is just like your local bank account where you create a savings account and store your money. Same way create a free account with Block Chain wallet and store your Bitcoins.

You can convert the BitCoins to cash at any time you want or make a payment for any services you used.

Creating an account with block chain will takes only a few minutes of your time once you are ready. Let me explain in detail how to register a free blockchain wallet account.

Steps to create Blockchain Wallet account

You should create this account in order to take part in Bitcoin transactions.

Please go after this step by step instructions keenly and create your account.

STEP 1: Open blockchain.info website

Open blockchain.info. Choose Wallet option from the list of navigation menu located at the top of the web page.

Now, You need to create a Fresh Block Chain Wallet account right, so just click “Create A Free Blockchain Wallet” button .

The next browser explosions the form, and it asks for Email and Password. Use your primary Gmail ID and create a fresh password for this account . Use Uppercase, Lowercase alphabets, Numbers, Special characters and make eleven – fifteen characters as your password .

Hooray, your Block Chain wallet account created. Just press Get commenced to expose your dashboard which will come in the next screen.

In the next browser, click “Get Commenced” to view your fresh Wallet Dashboard.

Here’s your own block chain wallet account. Now it shows zero BTC. Here where you are ready to make thousands of dollars in cash. Nosey to know how? Learn how to earn money from Bitcoins?

If you open a savings account in your bank, you will get an 16digit number that is unique to identify your account number. Same process here too, just click “Receive” button to get your thirty four digit Alpha Numeric characters unique BTC address and it looks like 113NXWvi. FKMtwDAmBaDqgs7o.

Do not leave behind to verify your Email ID associated with your block chain wallet. Open your Gmail ID and you may find the mail like this picture.

Now it’s time to secure your account. Get your backup phrase which will be used in case of your password was lost or any un-authorised switches. Click on “Backup Pharse” and it will ask for your account password.

Inject the password and print the sheet. Now press “next” will display the very first four word of your back up phrase. Write the same in the printed sheet or some where else.

Click Next Four Words and write down next and same. It has totally twelve word phrases to note down. Make a copy somewhere and keep it safe.

Accomplish the task and click Finish.

Create a password hint to recall your password if you left behind at the login process. Finish all the three to finish Level one security process to protect your block chain account.

Now, go to Level Two: of your account protection. Need to link a mobile number to your wallet account and enable 2-Step authentication factor which you will already know and is similar to Gmail 2-Step authentication.

Level three safety: Blocking IP that suspects to be part of anonyms from TOR netwrork.

Super, Awesome you by yourself created a block chain wallet account and got your unique BTC address.

Securely write your Back up phrase, Unique Wallet identifier used inplace of login email iD, password etc.

Now its time to work in Faucet sites and begin earning Bit Coins. Accumulate your coins in this secured wallet and use later to purchase any thing or transfer to someone and get cash instead.

ALL THE BEST , Lets begin working in BTC sites and make yam-sized money. Earn Rs.50000 every month without any investment.

How to Earn Bitcoins?

So, now you are ready with your Blockchain account setup. Online Home Income have provided a list of Bitcoin paying sites in our other article for your convenience.

1.) Visit the link very first and then read the article to understand the uses of Bitcoins.

Two.) Scroll to the bottom of the article where you will get the list of paying sites. Register all sites at once using your BTC address.

Trio.) Every site will have their payout system which I have mentioned already. So read and know by yourself.

Bitcoins are truly an effortless way to earn money online but it needs your allegiance and hard work to achieve the high level of success. We will update sites frequently and may delete some sites because not all online sites are genuine and will pay for a long time.

If we suspect any site we recommend has stopped paying or either delaying payments we will put those sites on our observe list. Later after some time we will either eliminate or proceed work with them.

As my valuable site visitor, you are requested to visit this page often repeatedly for updates.

Sharing is caring.

⇒ Online data entry jobs — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

⇒ Form packing online work — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

Are you serious in Making Money Online?

Join my free Email training program to get detailed information.

I personally training you to earn money online without investment.

Bitcoins: How to create a Blockchain Wallet account?

Bitcoins: How to create a Blockchain Wallet account?

What is Blockchain Wallet?

Block chain is an online Bitcoin Wallet that permits any people to transfer bitcoins as a payment to any part of the world in just as effortless as one – two – three steps.

It is a free service which makes lighter to send and receive your Bitcoins without the need of Bitcoin client software.

It was very first released in August two thousand eleven that maintains the list of records involved in the bitcoin transaction.

Every user need to connect to a bitcoin network in order to transfer bitcoins. It is strongly protected by cryptography and hence it is merely unlikely to crack.

If you want to know more about block chain wallet then you can read what Wikipedia says about Block Chain.

Here this article written to explain you about how to create a block chain wallet account?

It is just like your local bank account where you create a savings account and store your money. Same way create a free account with Block Chain wallet and store your Bitcoins.

You can convert the BitCoins to cash at any time you want or make a payment for any services you used.

Creating an account with block chain will takes only a few minutes of your time once you are ready. Let me explain in detail how to register a free blockchain wallet account.

Steps to create Blockchain Wallet account

You should create this account in order to take part in Bitcoin transactions.

Please go after this step by step instructions keenly and create your account.

STEP 1: Open blockchain.info website

Open blockchain.info. Choose Wallet option from the list of navigation menu located at the top of the web page.

Now, You need to create a Fresh Block Chain Wallet account right, so just click “Create A Free Blockchain Wallet” button .

The next browser geysers the form, and it asks for Email and Password. Use your primary Gmail ID and create a fresh password for this account . Use Uppercase, Lowercase alphabets, Numbers, Special characters and make eleven – fifteen characters as your password .

Hooray, your Block Chain wallet account created. Just press Get began to expose your dashboard which will come in the next screen.

In the next browser, click “Get Embarked” to view your fresh Wallet Dashboard.

Here’s your own block chain wallet account. Now it shows zero BTC. Here where you are ready to make thousands of dollars in cash. Nosey to know how? Learn how to earn money from Bitcoins?

If you open a savings account in your bank, you will get an 16digit number that is unique to identify your account number. Same process here too, just click “Receive” button to get your thirty four digit Alpha Numeric characters unique BTC address and it looks like 113NXWvi. FKMtwDAmBaDqgs7o.

Do not leave behind to verify your Email ID associated with your block chain wallet. Open your Gmail ID and you may find the mail like this photo.

Now it’s time to secure your account. Get your backup phrase which will be used in case of your password was lost or any un-authorised switches. Click on “Backup Pharse” and it will ask for your account password.

Come in the password and print the sheet. Now press “next” will display the very first four word of your back up phrase. Write the same in the printed sheet or some where else.

Click Next Four Words and write down next and same. It has totally twelve word phrases to note down. Make a copy somewhere and keep it safe.

Accomplish the task and click Finish.

Create a password hint to recall your password if you left behind at the login process. Accomplish all the three to finish Level one security process to protect your block chain account.

Now, go to Level Two: of your account protection. Need to link a mobile number to your wallet account and enable 2-Step authentication factor which you will already know and is similar to Gmail 2-Step authentication.

Level three safety: Blocking IP that suspects to be part of anonyms from TOR netwrork.

Super, Awesome you by yourself created a block chain wallet account and got your unique BTC address.

Securely write your Back up phrase, Unique Wallet identifier used inplace of login email iD, password etc.

Now its time to work in Faucet sites and embark earning Bit Coins. Accumulate your coins in this secured wallet and use later to purchase any thing or transfer to someone and get cash instead.

ALL THE BEST , Lets embark working in BTC sites and make massive money. Earn Rs.50000 every month without any investment.

How to Earn Bitcoins?

So, now you are ready with your Blockchain account setup. Online Home Income have provided a list of Bitcoin paying sites in our other article for your convenience.

1.) Visit the link very first and then read the article to understand the uses of Bitcoins.

Two.) Scroll to the bottom of the article where you will get the list of paying sites. Register all sites at once using your BTC address.

Trio.) Every site will have their payout system which I have mentioned already. So read and know by yourself.

Bitcoins are truly an effortless way to earn money online but it needs your loyalty and hard work to achieve the high level of success. We will update sites frequently and may delete some sites because not all online sites are genuine and will pay for a long time.

If we suspect any site we recommend has stopped paying or either delaying payments we will put those sites on our observe list. Later after some time we will either liquidate or proceed work with them.

As my valuable site visitor, you are requested to visit this page often repeatedly for updates.

Sharing is caring.

⇒ Online data entry jobs — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

⇒ Form packing online work — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

Are you serious in Making Money Online?

Join my free Email training program to get detailed information.

I personally instructing you to earn money online without investment.

Bitcoins: How to create a Blockchain Wallet account?

Bitcoins: How to create a Blockchain Wallet account?

What is Blockchain Wallet?

Block chain is an online Bitcoin Wallet that permits any people to transfer bitcoins as a payment to any part of the world in just as effortless as one – two – three steps.

It is a free service which makes lighter to send and receive your Bitcoins without the need of Bitcoin client software.

It was very first released in August two thousand eleven that maintains the list of records involved in the bitcoin transaction.

Every user need to connect to a bitcoin network in order to transfer bitcoins. It is strongly protected by cryptography and hence it is merely unlikely to crack.

If you want to know more about block chain wallet then you can read what Wikipedia says about Block Chain.

Here this article written to explain you about how to create a block chain wallet account?

It is just like your local bank account where you create a savings account and store your money. Same way create a free account with Block Chain wallet and store your Bitcoins.

You can convert the BitCoins to cash at any time you want or make a payment for any services you used.

Creating an account with block chain will takes only a few minutes of your time once you are ready. Let me explain in detail how to register a free blockchain wallet account.

Steps to create Blockchain Wallet account

You should create this account in order to take part in Bitcoin transactions.

Please go after this step by step instructions keenly and create your account.

STEP 1: Open blockchain.info website

Open blockchain.info. Choose Wallet option from the list of navigation menu located at the top of the web page.

Now, You need to create a Fresh Block Chain Wallet account right, so just click “Create A Free Blockchain Wallet” button .

The next browser explosions the form, and it asks for Email and Password. Use your primary Gmail ID and create a fresh password for this account . Use Uppercase, Lowercase alphabets, Numbers, Special characters and make eleven – fifteen characters as your password .

Hooray, your Block Chain wallet account created. Just press Get embarked to expose your dashboard which will come in the next screen.

In the next browser, click “Get Commenced” to view your fresh Wallet Dashboard.

Here’s your own block chain wallet account. Now it shows zero BTC. Here where you are ready to make thousands of dollars in cash. Nosey to know how? Learn how to earn money from Bitcoins?

If you open a savings account in your bank, you will get an 16digit number that is unique to identify your account number. Same process here too, just click “Receive” button to get your thirty four digit Alpha Numeric characters unique BTC address and it looks like 113NXWvi. FKMtwDAmBaDqgs7o.

Do not leave behind to verify your Email ID associated with your block chain wallet. Open your Gmail ID and you may find the mail like this picture.

Now it’s time to secure your account. Get your backup phrase which will be used in case of your password was lost or any un-authorised switches. Click on “Backup Pharse” and it will ask for your account password.

Inject the password and print the sheet. Now press “next” will display the very first four word of your back up phrase. Write the same in the printed sheet or some where else.

Click Next Four Words and write down next and same. It has totally twelve word phrases to note down. Make a copy somewhere and keep it safe.

Finish the task and click Finish.

Create a password hint to reminisce your password if you left behind at the login process. Finish all the three to finish Level one security process to protect your block chain account.

Now, go to Level Two: of your account protection. Need to link a mobile number to your wallet account and enable 2-Step authentication factor which you will already know and is similar to Gmail 2-Step authentication.

Level three safety: Blocking IP that suspects to be part of anonyms from TOR netwrork.

Super, Awesome you by yourself created a block chain wallet account and got your unique BTC address.

Securely write your Back up phrase, Unique Wallet identifier used inplace of login email iD, password etc.

Now its time to work in Faucet sites and commence earning Bit Coins. Accumulate your coins in this secured wallet and use later to purchase any thing or transfer to someone and get cash instead.

ALL THE BEST , Lets commence working in BTC sites and make phat money. Earn Rs.50000 every month without any investment.

How to Earn Bitcoins?

So, now you are ready with your Blockchain account setup. Online Home Income have provided a list of Bitcoin paying sites in our other article for your convenience.

1.) Visit the link very first and then read the article to understand the uses of Bitcoins.

Two.) Scroll to the bottom of the article where you will get the list of paying sites. Register all sites at once using your BTC address.

Trio.) Every site will have their payout system which I have mentioned already. So read and know by yourself.

Bitcoins are truly an effortless way to earn money online but it needs your fidelity and hard work to achieve the high level of success. We will update sites frequently and may delete some sites because not all online sites are genuine and will pay for a long time.

If we suspect any site we recommend has stopped paying or either delaying payments we will put those sites on our witness list. Later after some time we will either liquidate or proceed work with them.

As my valuable site visitor, you are requested to visit this page often repeatedly for updates.

Sharing is caring.

⇒ Online data entry jobs — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

⇒ Form packing online work — Free registration, ⇒ Earn Rs300 to five hundred per task, ⇒ http://goo.gl/RcAYw4

Are you serious in Making Money Online?

Join my free Email training program to get detailed information.

I personally instructing you to earn money online without investment.

Related video:

Bitcoin und Blockchain: Wundertechnik mit großem Potenzial, Nachrichten

BR-Navigation

Hauptnavigation

Nachts in Alpennähe etwas Regen, Tiefstwerte eight bis fourteen Grad

Normaler Verkehr in Bayern

Durchschnittliche Bewertung: Four,65 von five bei seventeen abgegebenen Stimmen.

Der Bitcoin und andere Digitalwährungen wie Ether erleben einen Höhenflug. Und für die zugrundeliegende Blockchain-Technologie gibt es noch viele weitere aussichtsreiche Anwendungen: Zum Beispiel elektronische Vertragsabschlüsse, Urheberrechtsmanagement oder die fälschungssichere Stimmabgabe bei Wahlen.

Von: Florian Regensburger

Der Bitcoin ist die bekannteste Digitalwährung. In den letzten zwei Jahren hat sich sein Kurs prompt verzehnfacht, alleine in letzten zwölf Monaten verfünffacht, auf heute an die zweieinhalb Tausend Euro pro Bitcoin. Immer wieder gibt es aber große Ausschläge beim Kurs, sowohl nach oben als nach unten – Investitionen in Bitcoin gelten als hochspekulativ. Der Bitcoin sei “kein geeignetes Medium, um Werte aufzubewahren. Das zeigt ein einfacher Blick auf die sehr schwankungsanfällige Kursentwicklung”, sagte etwa das Bundesbank-Vorstandsmitglied Carl-Ludwig Thiele im Mai der “Welt am Sonntag”.

Miner schürfen Bitcoins

Bitcoin-Fans sind häufig auch selbst sogenannte Miner. Das heißt, sie stellen selbst Einheiten der Digitalwährung her. Genau so passiert das bei anderen Kryptowährungen wie Steem, Dash, Smartcoins oder dem Blockchain-Netzwerk Ethereum mit der Währung Ether. Letzterer wird zugetraut, Bitcoins in Sachen Popularität mittelfristig ablösen zu können.

Das Prinzip des Minings – des “Schürfens” von digitalem Edelmetall – ist immer das gleiche: Die Miner berechnen Hash-Werte, eine Art Prüfsumme, aus den weltweit stattfindenden Transaktionen zum Beispiel mit Bitcoin. Unter anderem aus diesem Hash errechnet sich dann ein neuer Block, welcher der Bitcoin-Blockchain hinzugefügt wird. Mit jedem neuen Block werden neue Bitcoins ausgegeben, welche der Miner, der den neuen Block als erster identifiziert und damit quasi den Zuschlag dafür bekommt, erhält.

Allerdings ist das Mining derart rechenintensiv, dass es sich selbst mit einem sehr leistungsfähigen Privatrechner praktisch nicht lohnt – allein schon wegen der Stromkosten. In der Praxis schließen sich daher meist viele Miner zu sogenannten Mining Pools zusammen und bündeln damit ihre Rechen-Power.

Sehr fälschungssichere Technologie

zum Artikel Netzlexikon B wie Blockchain

Das zugrundeliegende Prinzip der Blockchain macht Bitcoin oder Ether-Transaktionen sehr fälschungssicher, weil alle Informationen in identischen Datensätzen auf etlichen verschiedenen Computern weltweit gespeichert sind. In jedem Bitcoin sind sämtliche Stationen hinterlegt, die das virtuelle Geldstück schon durchlaufen hat. Gleichzeitig sind diese Informationen in identischer Art bei allen Teilnehmern der jeweiligen Bitcoin-Börse gespeichert und werden regelmäßig miteinander abgeglichen.

Wenn also jemand etwas manipulieren wollte, müsste er sich Zugang zu tausenden Computern verschaffen, um dort – zeitgleich und unbemerkt – die jeweils identische Änderung vorzunehmen. Dabei hat kein Staat, keine Behörde und auch keine Bank die Aufsicht über die jeweilige Blockchain, sie wird allein über das Rechnernetz aller Teilnehmer verwaltet.

Die Blockchain rückt näher an den Endanwender

zum Artikel Zukunfts-Technologie Allianz für professionellen Blockchain-Einsatz

In Deutschland fremdeln die meisten noch mit Digitalwährungen. In den USA und in Asien, allen voran in China werden weitaus mehr Bitcoins, Ethers und Co. geschürft und auch gehandelt. Und es gibt auch mehr und mehr Initiativen, den Einsatz der Blockchain-Technik zu professionalisieren und sie näher an den normalen Verbraucher heranzubringen. So wurde letzte Woche bekannt, dass die Schweizer Crypto Fund AG bis Jahresende einen Investmentfonds für Kryptowährungen auf die Beine stellen will. Bitcoin und Ether würden dabei je thirty five Prozent des Portfolios ausmachen. Das Münchner Startup Blockpay etwa entwickelt eine App, mit der man relativ einfach Transaktionen in verschiedenen Kryptowährungen tätigen kann.

Außerdem soll der Einsatz der Blockchain über das Finanzielle hinaus ausgeweitet werden: So bietet die Ethereum-Blockchain eine Plattform für Clever Contracts – was im wesentlichen eine sichere Art der Dokumentation von Informationen und Transaktionen jeglicher Art bezeichnet. Das können digitale Vertragsabschlüsse sein, aber auch zum Beispiel Identitäts-Management. Der Musikstreaming-Anbieter Spotify etwa hat im April mit dem Startup Mediachain Technologie eingekauft, um auf Blockchain-Basis Urheberrechte an Musik und die Zahlung entsprechender Lizenzgebühren an die Rechteinhaber abzuwickeln.

Blockchain gegen Wahlmanipulation

Ein weiterer vielversprechender Ansatz ist der Einsatz von Blockchain-Technologie für E-Voting-Systeme. Gerade vor dem Hintergrund von Manipulationsvorwürfen bei vielen internationalen Wahlen in den letzten Jahren könnte eine dezentrale, transparente und weitgehend fälschungssichere Technik hier ein Stück verloren gegangenes Vertrauen wieder herstellen.

Florian Regensburger

Redaktion BR24 Netzwelt – berichtet für BR24 und den BR-Hörfunk über Netz- und Technikthemen

Related video:

Bitcoin Projects on Github Surpass Ten, zero – Bitcoin News

Bitcoin Projects on Github Surpass Ten,000

In the world of open source code, Bitcoin is already one of the most popular projects and protocols being worked on today. Like price, regulations, and merchant adoption, software development is a major metric that can be used to gauge the growth of Bitcoin. The number of projects involving Bitcoin on the leading development platform and repository, Github, crossed over Ten,000 last week and is presently sitting at Ten,055 at press time.

Popular Open Source Projects

Like Bitcoin, most projects on Github are open source, meaning that anyone can copy them to make fresh versions with the switches they want. These spin-off projects are called ‘forks’. Bitcoin presently has 7,535 forked projects on Github, many of which are altcoins.

Meantime, a search on the site for “Bitcoin” yields Ten,055 Bitcoin-related projects. Putting this number into perspective, Bitcoin.com examined the search results for other protocols for comparison.

Protocols with more projects than Bitcoin

The largest protocol, Http, which all website developers use, has 291,882 projects on Github today. Wifi is another enormously common protocol but only has 14,889 projects listed while Bluetooth technology has 13,624. Since Bitcoin presently has Ten,055 projects and is climbing, it could surpass Bluetooth this year.

Protocols with fewer projects than Bitcoin

Bitcoin has already surpassed so many other popular protocols. For example, FTP, the old standard for uploading files from desktops to any servers, has 8,657 projects on Github today while Secure Socket Layer (SSL), used for standard website communication, only has 7,129 projects.

VPNs have Four,036 open source projects, which include all reputable VPN service providers. SMTP mail server projects total Trio,693, and remarkably, the basic protocol of the internet itself, TCP/IP, only has 1,861 projects on Github presently.

Top Money Protocols

Bitcoin is already the most popular protocol for money over the internet. The entire category of cryptocurrency, excluding Bitcoin, has Two,147 projects running today. Meantime, Paypal and Visa only have Trio,904 and 1,672 open source projects respectively, since at least some of their code is closed source.

In other categories of protocols, home automation is one of the largest niche markets to contest with Bitcoin, presently having Five,161 projects. Bittorrent has 1,940 projects while the Interplanetary File System (IPFS) has 777.

Most Popular Projects Using Bitcoin

The vast number of complementary projects to Bitcoin on Github represents the greater Bitcoin ecosystem. They include everything from wallets to code libraries to exchanges and even bitcoin trading bots. Many reputable companies like Bitpay and Blockchain place the code for their products on Github to help create transparency and build confidence among their customers.

Projects are also ranked by popularity on Github. Other than Bitcoin’s code libraries and other versions of the Bitcoin code itself, the most popular Bitcoin projects include Zeronet, the Plucky Browser, a Bittorrent/Github fusion called Gittorrent, Andreas Antonopoulos’ book entitled “Mastering Bitcoin”, Bitpay’s operating system called Bitcore, a trading bot called Gekko, the Electrum wallet, an Arbitrage trading bot, and the classic CPUMiner software.

What do you think of the number of Bitcoin projects on Github? Let us know in the comments section below.

Pictures courtesy of Shutterstock and Github

Related video:

Bankchain vs Ripple – The Merkle

Bankchain vs Ripple

Over the past few years, there has been a lot of talk about the so-called ‘bankchains”. As many people are well aware of, financial institutions have taken an interest in blockchain settlement, yet they will not necessarily use bitcoin or other open blockchains. Instead, a project called “Bankchain” has been developed. However, a lot of banks also concentrate their attention on Ripple. Now is a good time to compare both projects and see what they have to suggest.

Two. Bankchain

As the name somewhat suggests, the Bankchain project is all about using blockchain technology for post-trade settlement in the financial sector. The project labels itself as a “next-generation blockchain settlement process”. Albeit this is not an open blockchain such as Bitcoin, Ethereum, or any other currency, there are some benefits to Bankchain that banks will appreciate.

For example, Bankchain provides instant settlement to reduce counterparty risk. Additionally, there is a universal collective ledger – only with fucking partners of the project, tho’ – and enhanced automation services. More importantly, Bankchain is designed to improve operational efficiency all the while lowering implementation costs and overall overhead fees associated with the banking process.

The Bankchain project exists of two main components” the solution outlined above, and the Euroclear Bankchain. This latter part is designed to convert the gold market. More specifically, Euroclear Bankchain brings instant settlement to the London bullion market. On paper, it sounds like Bankchain and the Euroclear version are both powerful implements for parties in the financial sector.

1. Ripple

Most cryptocurrency users are well aware of the Ripple project. With a strong concentrate on the traditional financial sector, it is evident Ripple is not a project that aims to cater just to cryptocurrency enthusiasts. Ripple positions itself as the global settlement network, suggesting a lot of features that are somewhat similar to BankChain. The project makes use of distributed financial technology that lets banks finish real-time international payments across different networks.

So far, several dozens of banks have signed up for the Ripple network, as they all see the benefit this project brings to the table. The project provides instant settlement at low costs. Moreover, the Ripple network is capable of processing a lot of transactions per 2nd, making it one of the more efficient settlement layers in the business today.

It is also worth mentioning there is the XRP currency, which acts as an independent digital asset native to the Ripple Consensus ledger. XRP is not required to transact on Ripple – using the token ensures a portion of XRPs are demolished as a network fee – it can enable more competitive foreign exchange markets for cross-border payments. This is clearly an asset designed to facilitate traditional financial transactions, rather than using it for cryptocurrency speculation.

If you liked this article, go after us on Twitter @themerklenews and make sure to subscribe to our newsletter to receive the latest bitcoin, cryptocurrency, and technology news.

About The Author

Jdebunt

JP Buntinx is a FinTech and Bitcoin enthusiast living in Belgium. His passion for finance and technology made him one of the world’s leading freelance Bitcoin writers, and he aims to achieve the same level of respect in the FinTech sector.

Related video:

Bank Fees & Blockchain: A Match Made in Heaven?

Articles

  • By Tom Hunt
  • Published: 6/12/2017

Over the last several months, I’ve been hearing a lot about how blockchain is going to revolutionize treasury and finance. I was a bit skeptical at very first, but after taking a look at some of the proofs of concept out there, I began to drink the Kool-Aid, too.

The thing is, whenever a fresh lump of technology hits the market, treasury professionals are going to be skeptical. It’s just in their nature. I know; I used to be one. And we have to be—if you’ve ever walked through the exhibit hall of a treasury conference like AFP 2017—you’ll be inundated with pitches from vendors and if you’re not careful, you could spend hours getting wowed by some technology that your treasury function doesn’t have the budget for.

In a way, blockchain is no different; there will be slew of blockchain solutions hitting the market in the coming years that indeed don’t apply to you or your business. But there will also be many that will, because there has been an effort by fintech developers to create solutions that improve routine business processes. Some, like Microsoft’s solution to improve the letter-of-credit process, are already in play.

I don’t have to tell you that there are slew of arduous processes that treasury professionals would absolutely love to streamline. One of those is bank fee analysis. As I wrote about just a few months ago, this process is a enormous headache for practitioners.

After reviewing the blockchain solution that Microsoft and Bank of America Merrill Lynch developed for trade finance, I eyed a parallel with banking. It’s decentralized, and you have a lot of different players and different relationships. So why can’t we explore the possibility of using a blockchain solution for account analysis?

There are over Two,500 AFP service codes in the U.S. alone. Why? Because there is no consistency in the ways banks charge for services. Corporate practitioners end up being the ones to do all the analysis, typically through manual processes. That’s a nightmare for the treasury department of a ample corporation.

Could a blockchain solution help?

AFP is putting together a petite, exploratory meeting with banks, treasury practitioners and blockchain experts to take a look at bank fee analysis and see if there is any way to make this happen.

Now, I won’t lie to you—this isn’t at the top of banks’ priority lists. I ran this idea by AFP’s Treasury Advisory Group during our latest meeting, and some practitioners were very skeptical as to whether banks would even bother to do something like this.

But what we do know is that banks, across the board, are working on blockchain solutions. And I simply can’t believe that when BAML determined to commence working on blockchain, the very first thing that popped into their minds was, “Let’s improve the letter of credit process for trade finance.” What is more likely is that Microsoft pinpointed an area that could be vastly improved, and they partnered with BAML on it.

So maybe that’s all the banks need to improve the fee analysis process—a shove in the right direction from practitioners. The good news is that you can be part of that process. The space in our exploratory blockchain meeting is limited, but if you’d like to be a part of it, please feel free to reach out to me.

Additionally, if you’d just like to learn more about blockchain, then don’t miss out on AFP 2017. Blockchain, and how it is applicable to treasury and finance, will be featured prominently in a number of sessions. We’ll also have Don Tapscott, author of “Blockchain Revolution” and one of the top blockchain experts in the world, speaking at the AFP MindShift Breakfast. Tapscott believes that it’s only a matter of time before blockchain converts financial services, corporate structure, business strategy, and government. From what I’ve observed, those switches are coming quicker than you think.

Click here to learn more about AFP two thousand seventeen this October 15-18 in San Diego.

Related video:

Are Blockchains Key to the Future of Web Encryption?

blockchain encryption

May 7, two thousand seventeen at 11:50 UTC by Joshua Oliver

Encrypted websites now treat more than half the world’s web traffic, but the way the keys for those connections are exchanged and verified hasn’t switched much in twenty years.

The current system relies on a global network of certificate authorities (CAs) to verify the public key and the holder of each secure website. It has long been criticized for creating central points of failure. And those central points, the CAs, have actually failed in some cases.

Some think blockchains – the technology that manages key exchange for the $25bn bitcoin network – could be the basis for a secure alternative.

The initial idea

Like blockchains, CAs began as a way to facilitate connected commerce. Veteran developer Christopher Allen – who helped set up the very first certificate authority, VeriSign – said he imagined a system with several CAs where users would pick which ones to trust.

As the system has scaled, however, it’s become impractical for everyday users to actively manage their trust in different authorities. Most now rely on their browser’s default settings instead. It’s now the browser companies that effectively control trust, providing them big clout within the certificate industry.

“We’ve got a fresh centrality, which is the big browser companies,” said Allen.

Today’s risks

While control over trust has centralized, the number of certificate authorities has grown. There are now hundreds of authorities in countries around the world, and a failure at any one of them undermines the entire system.

The worst incident to date was the collapse of the Dutch authority DigiNotar in 2011. Hacking DigiNotar permitted attackers to spy on around 300,000 Iranian Gmail accounts, and compelled a improvised shut down of many of the Dutch government’s online services.

Since then, there have been dozens of cases where CAs were caught issuing unverified certificates, using substandard security, or even attempting to deceive browser companies. None of these had the same effects as DigiNotar, and the industry has raised security standards many times since 2011, but there are still those who think it’s time to look for a long-term alternative to CAs.

One of those alternatives was outlined in a two thousand fifteen white paper, written at a workshop Allen hosted called “Rebooting Web of Trust”. The paper set out goals for a decentralized public key infrastructure (dpki) to substitute the current, centralized system.

“The objective of dpki is to ensure that . no single third-party can compromise the integrity and security of the system as as entire.”

In place of the current system, where domain ownership is recorded in the DNS and key are verified by CAs, Rebooting Web of Trust envisioned a secure namespace where domain registration and the key for each domain would be recorded on a blockchain.

A fresh namespace

The Ethereum Name System (ENS) is attempting to create the same kind of secure namespace for the ethereum community. It gives us a very first look at the challenges and opportunities of making these ideas work in practice.

Developer Alex Van de Sande said his team often uses the analogy of a sandwich to explain how ENS is designed. The ‘bread’ in the ENS sandwich are two plain contracts. One stipulates that if you own the domain, you’re entitled to its subdomains. The other treats payments.

Like in a sandwich, the complicated part of ENS is in the middle. That’s the contract that sets the rules for name registration. ENS wants to avoid the problem of domain squatting, which was common during the initial internet domain name boom.

They’re also pursuing the ‘principle of least surprise’, the idea that people shouldn’t be too astonished by who actually wields a name. It might seem like common sense that Bank of America should have very first dibs on bankofamerica.eth. But Van de Sande said that designing a system to implement that principle is very challenging, maybe even impractical.

He added that ENS will take the very first year after the relaunch as an chance to learn how to improve the registration rules. If the rules switch, he said, name owners will have a choice to upgrade or capitulate their names for a refund.

Van de Sande said he hopes ENS will be a model for a broader use of similar ideas, adding:

“ENS reflects the way we wish the internet would be. It doesn’t mean that it’s actually going to be that way.”

Blockstack’s model

Another way to decentralize the infrastructure behind secure online communication is to ensure that users can verify the actual information they receive, rather than attempting to secure the server-client connection.

Engineer Jude Nelson, who collaborated on the two thousand fifteen “Rebooting Web of Trust” white paper, told CoinDesk this is the purpose of his startup, Fresh York-based Blockstack.

Blockstack’s system, which is presently in an alpha release, permits users to record their unique name and key on the bitcoin blockchain, and then lookup another user in order to verify the information they receive.

“With Blockstack, we’re attempting to make it so that developers can build server-less, decentralized, applications where users own their own data,” said Nelson. “There are no passwords and developers don’t have to host either of them.”

This could, one day, reduce the need for the website encryption altogether.

Sovereign identity and its hurdles

Each of these projects reflects the same overarching objective: to reduce the role of third parties and give users more control.

Allen, who has convened the Rebooting Web of Trust group every six months since 2015, said he is working towards technologies that give users true sovereignty.

The many strings of letters and numbers that represent individuals online today are all registered with third parties. “You’re not truly buying it, you’re renting it. You don’t have true sovereignty,” said Allen.

But Allen also sees many challenges ahead. One is usability. Systems that work for technically adept users may not scale to applications where most users will rely on defaults and won’t be ready to make choices about who to trust.

“We’ve learned in technology that providing users choice often doesn’t work.”

Meantime, the centralized system is also switching. Google is in the middle of rolling out its own solution to the pitfalls of the CA system — a plan called Certificate Transparency, which requires CAs to log all trusted certificates in public view.

Google said it can verify log-inclusion and the log’s honesty with Merkle trees, and the system has already permitted researchers to catch some bad certificates.

Google’s idea is to keep the third party, but liquidate the trust. And this treatment may prove to be a long-term competitor to blockchain-based projects which want to get rid of both.

The leader in blockchain news, CoinDesk is an independent media outlet that strives for the highest journalistic standards and abides by a stringent set of editorial policies. Interested in suggesting your expertise or insights to our reporting? Contact us at [email protected] .

Related video:

An Introduction to Ethereum and Brainy Contracts: a Programmable Blockchain

An Introduction to Ethereum and Brainy Contracts: a Programmable Blockchain

Learn about verified, distributed computations in the cloud using Ethereum

Bitcoin took the world by surprise in the year two thousand nine and popularized the idea of decentralized secure monetary transactions. The concepts behind it, however, can be extended to much more than just digital currencies. Ethereum attempts to do that, marrying the power of decentralized transactions with a Turing-complete contract system. In this post we will take a closer look at how Ethereum works and what makes it different from Bitcoin and other blockchains. Read on!

This is post two from a three-post series about Ethereum. Read post one if you haven't done so.

"Ethereum marries the power of decentralized transactions with Turing-complete contracts!"

Introduction

In our previous post, we took a closer look at what blockchains are and how they help in making distributed, verifiable transactions a possibility. Our main example was Bitcoin: the world's most popular cryptocurrency. Millions of dollars, in the form of bitcoins, are traded each day, making Bitcoin one of the most prominent examples of the viability of the blockchain concept.

Have you ever found yourself asking this question: "what would happen if the provider of this service or application disappeared?" If you have, then learning about Ethereum can make a big difference for you. Ethereum is a platform to run decentralized applications: applications that do not rely on any central server. In this post we will explore how Ethereum works and build a elementary PoC application related to authentication.

The Blockchain

A blockchain is a distributed, verifiable datastore. It works by marrying public-key cryptography with the nobel concept of the proof-of-work.

Each transaction in the blockchain is signed by the rightful holder of the resource being traded in the transaction. When fresh coins (resources) are created they are assigned to an proprietor. This possessor, in turn, can prepare fresh transactions that send those coins to others by simply embedding the fresh holder's public key in the transaction and then signing the transaction with his or her private-key. In this way, a verifiable link of transactions is created; each fresh transaction, with a fresh holder, pointing to the previous transaction, with the previous proprietor.

To order these transactions and prevent the double-spending problem, blockchains use the proof-of-work. The proof-of-work is a procedure that establishes a cost for grouping transactions in a certain order and adding them to the blockchain. These groups of transactions are called blocks. Each block points to a previous block in the chain, thus the name blockchain. By making blocks costly to make and making sure each fresh block points to the previous block, any potential attacker wanting to modify the history of transactions as represented by the blockchain must pay the cost of each block modified. Since blocks point to previous blocks, modifying an old block requires paying the cost for all blocks after it, making switches to old blocks very costly. A blockchain compounds the difficulty of modifying the blockchain by making the cost of creating blocks be of computational nature. In other words, to create fresh blocks, a certain amount of CPU power must be spent. Since CPU power is dependent on the advancement of technology, it is very hard for any single malicious entity to amass enough CPU power to outspend the rest of the network. A practical attack against a blockchain-based network usually requires a single entity controlling more than 50% of the combined CPU power of the network. The thicker the network, the tighter it is to perform.

But, as we spotted in our very first post in this series, blockchains are more than just that. Transactions, by their very nature, can do more than just send resources from holder A to possessor B. In fact, the very act of doing so can be described as a very elementary program: the sender produces a computation (transaction) that can only be performed if the receiver produces, at some point in the future, the right inputs. In the case of a standard monetary transaction, the right input would be the proof of ownership from the receiver. In other words, the receiver can only spend the coins he received if he proves he is the rightful holder of those coins. It may seem a bit contrived but it indeed isn't. When you perform a wire transfer, you prove you are the possessor of an account through some sort of authentication procedure. For a home-banking system that could simply be a username and a password. At a bank, it would be your ID or debit-card. These procedures are usually hardwired into the system, but with blockchains it needn't be so.

In our very first post we also took a cursory look at this. We very first displayed how Bitcoin transactions are in fact puny programs that are intepreted by each knot using a plain stack-based virtual-machine.

This virtual-machine, in the case of Bitcoin, is limited by design. It is not Turing-complete and can only perform a limited number of operations. Still, its plasticity opened up the possibility for many interesting uses. The petite script above, a.k.a. clever contract, is the standard "pay to pubkey hash" Bitcoin script. It describes a puny program that permits a sender to send coins to a receiver by verifying his identity with a public-key: the standard A to B monetary transaction, with ID cards substituted with public and private-keys. However, there's nothing preventing other uses, as long as you stick to the available operations supported by the virtual-machine. We took a look at a possible use in our previous post, where we created a perpetual-message system: immutable messages timestamped and forever embedded in the blockchain. The older they get, the tighter it is for them to ever be switched. Nifty.

Now, we'll take a look at how Ethereum amplifies these concepts.

Ethereum: a Programmable Blockchain

Albeit the concept of the blockchain was born out of the research into cryptocurrencies, they are much more powerful than just that. A blockchain essentially encodes one thing: state transitions. Whenever someone sends a coin in Bitcoin to someone else, the global state of the blockchain is switched. Moments before account A held fifty coins, now account A is empty and account B holds fifty coins. Furthermore, the blockchain provides a cryptographically secure way of performing these state transitions. In other words, not only the state of the blockchain can be verified by any outside party, but any state transitions initiated by blockchain users can only be performed in a secure, verifiable manner.

An interesting way to think of a blockchain is as a never-halting computation: fresh instructions and data are fetched from a pool, the pool of unconfirmed transactions. Each result is recorded in the blockchain, which forms the state of the computation. Any single snapshot of the blockchain is the state of the computation at that point.

All software systems deal in some way or another with state transitions. So what if we could generalize the state transitions inwards a blockchain into any software we could think of. Are there any inherent limitations in the blockchain concept that would prevent state transitions from being something different than sending coins? The response is no. Blockchains deal with reaching consensus for decentralized computations, it does not matter what those computations are. And this is exactly what the Ethereum network brings to the table: a blockchain that can perform any computation as part of a transaction.

It is effortless to get lost in the world of cryptocurrencies and plain exchanges of value inbetween two users, but there are many other applications where distributed, secure computations make sense. It is this system that permits for things like:

  • Secure deposits that get returned to the payer if conditions are met (or not)
  • Money that cannot be spent unless a certain number of users agree to spending it
  • Money that can only be spent after producing outer data that pleases rules set in the script

Given a Turing-complete system for computations associated to a blockchain, many more applications are possible. This is Ethereum.

Take a look at the things the community is working on to get a sense of the many useful ideas that can be run as decentralized applications.

Ether

Albeit Ethereum brings general computations to the blockchain, it still makes use of a "coin". Its coin is called "ether", and, as any coin, it is a number that can be stored into account addresses and can be spent or received as part of transactions or block generation. To run certain transactions, users must spend Ether. But why is this the case?

A Turing-complete language is a language that, by definition, can perform any computation. In other words, if there is an algorithm for something, it can express it. Ethereum scripts, called wise contracts, can thus run any computation. Computations are run as part of a transaction. This means each knot in the network must run computations. Any machine capable of running a Turing-complete language (i.e. a Turing machine) has one problem: the halting problem. The halting problem essentially states that no Turing machine can determine beforehand whether a program run in it will either terminate (halt) or run forever. In other words, the only way of finding out if a lump of code loops forever or not is by running that code. This poses a big problem for Ethereum: no single knot can get caught up in an infinite loop running a program. Doing so would essentially stop the evolution of the blockchain and halt all transactions. But there is a way around that.

Since computation is costly, and it is in fact rewarded by providing knots that produce blocks ether (like Bitcoin), what better way to limit computations than by requiring ether for running them. Thus Ethereum solves the problem of denial of service attacks through malicious (or bugged) scripts that run forever. Every time a script is run, the user requesting the script to run must set a limit of ether to spend in it. Ether is consumed by the script as it runs. This is ensured by the virtual machine that runs the scripts. If the script cannot accomplish before running out of ether, it is halted at that point. In Ethereum the ether assigned to an script as a limit is known as gas (as in gasoline).

As ether represents value, it can be converted to other coins. Exchanges exist to trade ether for other coins. This gives ether a real money valuation, much like coins from Bitcoin.

Brainy Contracts

Wise contracts are the key element of Ethereum. In them any algorithm can be encoded. Brainy contracts can carry arbitrary state and can perform any arbitrary computations. They are even able to call other wise contracts. This gives the scripting facilities of Ethereum tremendous plasticity.

Wise contracts are run by each knot as part of the block creation process. Just like Bitcoin, block creation is the moment where transactions actually take place, in the sense that once a transaction takes place inwards a block, global blockchain state is switched. Ordering affects state switches, and just like in Bitcoin, each knot is free to choose the order of transactions inwards a block. After doing so (and executing the transactions), a certain amount of work must be performed to create a valid block. In contrast to Bitcoin, Ethereum goes after a different pattern for selecting which blocks get added to the valid blockchain. While in Bitcoin the longest chain of valid blocks is always the rightful blockchain, Ethereum goes after a protocol called GHOST (in fact a variation thereof). The GHOST protocol permits for stale blocks, blocks that were computed by other knots but that would otherwise be discarded since others have computed newer blocks, to be integrated into the blockchain, reducing wasted computing power and enhancing incentives for slower knots. It also permits for quicker confirmation of transactions: whereas in Bitcoin blocks are usually created every ten minutes, in Ethereum blocks are created within seconds. Much discussion has gone into whether this protocol is an improvement over the much simpler "fastest longest chain" protocol in Bitcoin, however this discussion is out of scope for this article. For now this protocol shows up to run with success in Ethereum.

An significant aspect of how clever contracts work in Ethereum is that they have their own address in the blockchain. In other words, contract code is not carried inwards each transaction that makes use of it. This would quickly become unwieldy. Instead, a knot can create a special transaction that assigns an address to a contract. This transaction can also run code at the moment of creation. After this initial transaction, the contract becomes forever a part of the blockchain and its address never switches. Whenever a knot wants to call any of the methods defined by the contract, it can send a message to the address for the contract, specifying data as input and the method that must be called. The contract will run as part of the creation of newer blocks up to the gas limit or completion. Contract methods can come back a value or store data. This data is part of the state of the blockchain.

State

An interesting aspect of contracts being able to store data is how can that be treated in an efficient way. If state is mutated by contracts, and the nature of the blockchain ensures that state is always consistent across all knots, then all knots must have access to the entire state stored in the blockchain. Since the size of this storage in unlimited in principle, this raises questions with regards to how to treat this effectively as the network scales. In particular, how can smaller and less powerful knots make use of the Ethereum network if they can't store the entire state? How can they perform computations? To solve this, Ethereum makes use of something called Merkle Patricia Trees.

A Merkle Patricia Tree is a special kind of data structure that can store cryptographically authenticated data in the form of keys and values. A Merkle Patricia Tree with a certain group of keys and values can only be constructed in a single way. In other words, given the same set of keys and values, two Merkle Patricia Trees constructed independently will result in the same structure bit-by-bit. A special property of Merkle Patricia Trees is that the hash of the root knot (the very first knot in the tree) depends on the hashes of all sub-nodes. This means that any switch to the tree results in a entirely different root hash value. Switches to a leaf knot cause all hashes leading to the root hash through that and sister branches to be recomputed. What we have described is in fact the "Merkle" part of the tree, the "Patricia" part comes from the way keys are located in the tree. Patricia trees are attempts where any knot that is an only child is merged with its parent. They are also known as "radix trees" or "compact prefix trees". A trie is a tree structure that uses prefixes of the keys to determine where to put each knot.

The Merkle Patricia Trees implemented in Ethereum have other optimizations that overcome inefficiencies inherent to the plain description introduced here.

For our purposes, the Merkle aspect of the trees are what matter in Ethereum. Rather than keeping the entire tree inwards a block, the hash of its root knot is embedded in the block. If some malicious knot were to tamper with the state of the blockchain, it would become evident as soon as other knots computed the hash of the root knot using the tampered data. The resulting hash would simply not match with the one recorded in the block. At this point we should find ourselves asking a big question: why not simply take the hash of the data? Merkle Patricia Trees are used in Ethereum for a different, but very significant reason: most of the time, knots do not need a utter copy of the entire state of the system. Rather, they want to have a partial view of the state, finish enough to perform any necessary computations for newer blocks or to read the state from some specific address. Since no computations usually require access to the entire state stored in the blockchain, downloading all state would be superfluous. In fact, if knots had to do this, scalability would be a serious concern as the network expanded. To verify a partial lump of the state at a given point, a knot need only download the data necessary for a branch of the tree and the hashes of its siblings. Any switch in the data stored at a leaf would require a malicious knot to be able to carry a preimage attack against the hashing algorithm of the tree (to find the values for the siblings that combined with the modified data produce the same root hash as the one stored in the block).

All of this permits efficient operations on the state of the blockchain, while at the same time keeping its actual (potentially meaty) data separate from the block, still the center lump of the security scheme of the blockchain.

History

Much like Bitcoin, the blockchain can be used to find the state of the system at any point in time. This can be done by replaying each transaction from the very very first block up to the point in question. However, in contrast to Bitcoin, most knots do not keep a utter copy of the data for every point in time. Ethereum permits for old data to be pruned from the blockchain. The blockchain remains consistent as long as the blocks are valid, and data is stored outside of the blocks, so technically it is not required to verify the proof-of-work chain. In contrast to Bitcoin, where to find the balance of an account a knot must replay all transactions leading up to that point, Ethereum stores state by keeping the root hash of the Merkle Patricia Tree in each block. As long as the data for the last block (or any past blocks) is available, future operations can be performed in the Ethereum network. In other words, it is not necessary for the network to replay old transactions, since their result is already available. This would be akin to storing the balance of each account in each block in the Bitcoin network.

There are, however, knots that store the entire copy of the historical state of the blockchain. This serves for historical and development purposes.

Solidity and a Sample Wise Contract

Wise contracts run on the Ethereum Virtual Machine, which in turn runs on each knot. However powerful, the Ethereum Virtual Machine works at a level too low to be convenient to directly program (like most VMs). For this reason, several languages for writing contracts have been developed. Of these, the most popular one is Solidity.

Solidity is a JavaScript-like language developed specifically for writing Ethereum Brainy Contracts. The Solidity compiler turns this code into Ethereum Virtual Machine bytecode, which can then be sent to the Ethereum network as a transaction to be given its own address.

To better understand Solidity, let's take a look at one example:

This is a elementary holder claims contract. An holder claims contract is a contract that lets any address holder to record arbitrary key-value data. The nature of the blockchain certifies that the possessor of certain address is the only one who can set claims in connection to that address. In other words, the possessor claims contract permits anyone who wants to perform transactions with one of your addresses to know your claims. For example, you can set a claim called "email", so that anyone that wants to perform a transaction with you can get your email address. This is useful, since an Ethereum address is not strapped to an identity (or email address), only to its private-key.

The contract is as ordinary as possible. Very first there is the contract keyword that signals the beginning of a contract. Then comes OwnerClaims , the contract name. Inwards the contract there are two types of elements: variables and functions.

Among variables there are two types as well: constants and writable variables. Constants are just that: they can never be switched. Writable variables, however, save state in the blockchain. It is these variables that encode the state saved in the blockchain, nothing more.

Functions are chunks of code that can either read or modify state. Read-only functions are also marked as constant in the code and do not require gas to run. On the other palm, functions that mutate state require gas , since state transitions must be encoded in fresh blocks of the blockchain (and these cost work to produce).

Values returned from functions are returned to the caller.

The owners variable in our contract is a map, also known as associative array or dictionary. It matches a key to a value. In our case, the key is an address . Addresses in Ethereum are the identifiers of either normal accounts (usually managed by users) or other contracts. When an holder of an address determines to set a claim, it is this mapping from address to a claim that we are interested in. In fact, we are not simply mapping an address to a claim, but to a group of key-values that constitute a group of claims (in the form of another map). This is convenient because an address possessor might want to make several details about himself known to others. In other words, address owners might want to make their email address and their cellphone number available. To do so, they might create two claims: one under the "email" key, and the other under the "phone" key.

The contract leaves to each proprietor to determine what entries to create, so the names of the keys are not known in advance. For this reason, a special "default" key is available, so any reader might know at least one claim if he doesn't know what keys are available. In truth, this key is also in place for a different reason: Solidity does not make it practical to comeback bulk data from functions. In other words, it is not effortless to come back all claims connected to an address in a single function call. In fact, the mapping type does not even have an iteration operation (albeit one can be coded if needed), so it is not possible to know what keys are inwards a mapping. It is left as an exercise for the reader to find ways to improve this if needed.

Current and Potential Uses

What we just eyed with our ordinary example gave us a taste of what is possible with Ethereum. Do note it has nothing to do with exchanging money! Albeit ether is necessary to perform mutations on the network, our contract is stringently worried with securely establishing a series of claims connected to an Ethereum address. Nothing more. Not only the result is mathematically verifiable (no other person other than the holder of the address can set claims), but is also very hard to erase: it is recorded in a globally distributed database with no central knot!

Having access to a distributed, Turing-complete computing engine with verifiable semantics opens a world of possibilities. Let's take a look at interesting ideas already implemented or under implementation in Ethereum.

The Decentralized Autonomous Organization (DAO)

The DAO is, literally, an organization. It has members, it has a central authority (the holder), members can cast votes and the organization itself can perform any operations any other account could do. Members can create proposals, in the form of transactions, and voting members from the organization can cast votes to either approve the proposal or dismiss it. Proposals have a limit of time after which votes are counted and a decision is taken. The decision to perform or dismiss the proposal is carried by the contract of the DAO. In other words, no central authority can determine the fate of a proposal, and this is certified by the contract and the nature of the blockchain. The possessor can be switched by a proposal. The only privilege the proprietor has is the capability to add or eliminate voting members.

In fact, the DAO we have just described is only one of the possible implementations. There are many improvements or modifications that can be performed to create whatever type of hierarchy. A Congress, a shareholder association, a democracy, these are all possibilities.

To learn more about DAOs, the main Ethereum website has a entire area dedicated to them.

A Central Bank or Your Own Coin

Albeit ether has real value and can be traded for other coins, other coin systems can be implemented on top of Ethereum. For example, you could design your own coin with a central authority that can create money, authorize transactions or arbitrate disputes. Take a look at a possible implementation by following this tutorial.

A Crowdfunding System

Crowdfunding lets donors send money for a project that has not been ended or even began. In this way, funding for projects of different sizes is possible. The amount of money donated for the project is what usually determines the fate of the project. The usual problem with crowdfunding is the need for a central figure to hold founders responsible in case a project is not satisfactorily finished after funding, or to make sure all the money donated actually arrives at the forearms of the founders. In other words, crowdfunding requires a considerable amount of trust to be placed in both the founder of a project and the central authority. But with Ethereum this needn't be so.

With Ethereum, it is possible to design a contract that takes a certain amount of money from donors and stores it in an account. The funds in this account can be kept away from the palms of the founders until they provide proof of their progress. When a certain milestone is achieved, the funds can be released. On the other arm, if the founders fail to provide proof of their progress in a reasonable timeframe, donated funds can be automatically returned to the donors. All of this logic of treating funds can be performed without trust in a central authority. Donors can be sure their money won't be spent until proof-of-work is provided, and they can be sure they will always get their money back otherwise. They can also be 100% certain each donor's money will go into the right mitts.

Prove That You Said Something in the Past

An interesting aspect of the blockchain is that its mere existence is proof that every transaction in it happened at some point in time. Albeit a certain variance in the timestamp of a transaction is expected (as it will get set by the knot that creates the block that contains it), anything recorded in the blockchain happened at some point in the past. In fact, it is possible to assert it happened before or after other events also recorded or linked in some way to the blockchain. Since the blockchain permits for arbitrary state to be stored in it, it is possible to link an arbitrary message to an address. Anyone can confirm by looking at the blockchain that that message was produced at some point in the past by the proprietor of an address. All the possessor needs to do is prove he is the possessor of the address that produced the same message in the past. This can simply be done by performing a transaction using the same address as before.

Suppose you wrote a book. Before sending copies to your friends and editors, you determine to prove it was you who wrote it by storing its proof of existence in the blockchain. If your book gets plagiarized before getting published (by one of the editors, for example), you can prove it was you who wrote it by showcasing you linked its hash to an Ethereum address. When anyone wants to confirm you own the address, you can display it to them through any transaction of their choice. The blockchain ensures any person in doubt can see the association inbetween the hash of the book and your address, proving you had access to the utter copy of the book at some point in the past.

Proof of Existence for Digital Assets

The concept of the previous example can be extended to a proof of the existence of anything that can be hashed. In other words, anything with a single digital representation can be hashed and stored in the blockchain, just like the arbitrary message from above. Later, any user can query whether the element was hashed and added to the blockchain.

Here is one working example of this concept.

There are many more examples of things that can be implemented with Ethereum, check them out!

Aside: A Ordinary Login System using Ethereum

One of the cool things about Ethereum is that addresses are, by definition, systems to prove ownership. Whomever can perform operations with an Ethereum address is the rightful possessor of that address. This is, of course, the consequence of the underlying public-key infrastructure used to verify transactions. We can exploit this to create a login system based on Ethereum addresses. Let's see how.

Any login system is mainly worried with creating a unique identity that can be managed by whomever can pass a certain "login challenge". The login challenge is the method to prove that the same entity that created the account in the very first place is the same entity doing operations now. Most systems rely on the classic username + password login challenge: a fresh user registers by choosing a unique username and a password, then, anytime the system requires proof that the user is in fact who he says he is, it can request the password for that username. This system works. But with Ethereum we already have a system for proving identities: public and private keys!

We'll design a plain contract that can be used by any user to validate his ownership of an address. The login process will be as goes after:

  1. A user accesses a website that requires him or her to login. When the user is not logged in, the website requests the user to inject his or her Ethereum address.
  2. The backend for the website receives the address for the user and creates a challenge string and a JWT. Both of these are sent back to the user.
  3. The user sends the challenge string to the Login contract and stores the JWT for later use locally.
  4. The backend listens for login attempts using the challenge string at the Ethereum network. When an attempt with the challenge string for the right user is seen, it can assume the user has proved his or her identity. The only person that can send a message with an Ethereum address is the holder of the private key, and the only user that knows the challenge string is the user that received the challenge through the login website.
  5. The user gets notified or polls the website backend for confirmation of his or her successful login. The user then proceeds to use the JWT issued in step two for accessing the website. Alternatively, a fresh JWT can be issued after a successful login.

To that end, this is the Ethereum contract we will use:

The contract is utterly plain. Events are special elements in Solidity that are mapped to a system in Ethereum that permits special data to be logged. Events are generally observed by clients monitoring the evolution of the blockchain. This permits deeds to be taken by clients when events are created. In our case, whenever a user attempts to login, an event created with the challenge is broadcast. We only care about receiving a call from the rightful possessor of the Ethereum address that was passed to the third party website. And, thanks to the way Ethereum works, we can be sure the sender was the one who performed the call.

In addition to the sender's address, the challenge is also broadcast. This means anyone watching the blockchain now knows the challenge. However, this cannot be used on its own to impersonate a user: a user can only interact with the backend through the session JWT. This means an attacker must know three lumps of information to impersonate a user: the Ethereum address, the challenge AND the JWT issued with the challenge. Since JWTs are signed, an attacker cannot create a valid JWT to impersonate an user, even with access to the challenge.

What goes after is our backend code. Very first, let's see how to observe for Ethereum events:

The login_contract.js file contains what is needed to inter-operate with our contract. Let's take a look:

Web3 is the official client library to interact with Ethereum knots. An Ethereum knot is what actually connects to the rest of the Ethereum network. It performs "mining" (block generation), transaction operations (create and send) and block verification.

The Login.json file is generated by the Solidity contract compiler, part of the standard Ethereum development contraptions. The Solidity compiler takes Solidity source code and turns it into Ethereum Virtual Machine bytecode and an interface description file that can be used by Web3 to interact with the contract once it is uploaded to the network.

And here are our HTTP endpoints:

The /login endpoint receives a login request carrying an Ethereum address for the user that wants to login. The user must be the holder of such Ethereum address. It generates a JWT and a challenge. The JWT can only be used to access the /finishLogin endpoint.

Before the user can call the /finishLogin endpoint he or she must prove his or her identity by making a call to the login method of the Login contract. The login method receives a single parameter: the challenge returned by the /login endpoint. He must perform this call using the same account address that was passed to the /login endpoint. He or she can use any Ethereum wallet or client to do this.

After making the call to the login method of the Login contract, the user can finish the login by using the /finishLogin endpoint. He or she must pass the JWT returned by the /login endpoint to it. If the login is successful, a fresh JWT with total access is returned. Otherwise, if the login is still pending, an accepted HTTP status (202) is returned signalling decent verification of the login request is still pending. If the JWT passed to /finishLogin is invalid, an unauthorized HTTP status code is returned (401).

After the /finishLogin endpoint is called and the login process is finished, the returned JWT can be used to access other parts of the API. In this case, the /apiTest endpoint is available. It simply comebacks "It works!" packaged in a JSON object if the user is logged-in.

Running the Example

Building and deploying the example is not as straightforward as it may seem due to the nature of Ethereum and current development contraptions. Here are the steps we used to test the example above.

1. Get an Ethereum knot client

There are several Ethereum knot clients. A popular one is go-ethereum, a client written in Go. Download it and install it.

Ethereum, as other cryptocurrencies do, has different versions of the blockchain with different parameters. There are essentially two blockchains: the main official blockchain and a test blockchain. The main blockchain never undoes operations once they are confirmed. Since some operations require money, the main blockchain is not ideal for testing. The test blockchain, on the other palm, is much less rigorous about forks and switches. It is also simpler to mine "Ether", Ethereum's currency.

We could use the test network for our example here. However, running a client knot for any of the public networks is problematic for one reason: to be able to commence doing transactions, the client must very first verify all previous transactions in the blockchain. That means that bootstrapping a fresh client knot takes fairly a bit of time. Fortunately there is an alternative: we can create a fresh, pristine private Ethereum blockchain to run our tests. To do so, run go-ethereum using the following directive line:

Two. Create a fresh Ethereum account to mine some Ether

The geth directive can also be used to interact with a running client. Launch an interactive console connected to the running client:

The IPC file mentioned in the guideline can be found in the output from running the knot in our very first step. Look for the line that reads:

Now in the Geth console type:

After hitting Inject a prompt will show up requesting a passphrase. This is the passphrase that will be used to perform any operations using this account. You can think of this as the passphrase required to decrypt the private-key used to sign Ethereum transactions. Do not leave the prompt empty, choose a ordinary passphrase for testing instead. A fresh Ethereum address will be returned by the function. If at any point you leave behind this address, you can list accounts by investigating private.listAccounts (it's a variable, not a function, so don't add () at the end).

The geth console is a JavaScript interpreter.

Three. Embark mining some Ether

Now it's time to add some Ether to our fresh account. Ether is required to perform operations in the Ethereum blockchain, so it is necessary to perform this step. Ether can be gathered in two ways: by receiving it from another account or by mining it. Since this is a private network, we will need to mine it. Don't worry, the private network is by default configured to be able to mine Ether lightly. Let's do it:

Now wait a few seconds (or minutes depending on your hardware) and then confirm you have some Ether in your account:

Four. Compile and deploy our Login contract

To simplify the process of compiling and deploying contracts, we will use truffle . Truffle is a development framework for Ethereum, simplifying many common tasks. Install it:

Before using truffle to deploy contracts, it is necessary to "unlock" our account in our Ethereum knot client. Unlocking is the process of decrypting the private-key and holding it in memory using the passphrase used to create it. This permits any client libraries (such as Truffle) connecting to the knot to make operations on behalf of the unlocked account. Go to the geth console and type:

Now switch to the solidity directory of our sample application. Edit the truffle.js file and set your freshly created address as the from key. Then run:

The migrate directive compiles and deploys the contracts to the Ethereum network on behalf of the account set in truffle.js . As a result you will get the address of the freshly deployed contract. Take note of it.

Five. Install an Ethereum wallet

Ethereum wallets are convenient interfaces for users to interact with the Ethereum network. Sending and receiving Ether, deploying contracts or making calls to them are all operations usually supported by wallets. Mist is the official Ethereum wallet. Download it and install it.

Once installed, we will need to tell Mist to connect to our private network rather than the public main or test networks. To do this, run Mist from the directive line like so:

The IPC file is the same file used by the geth console and can be gathered from the geth output logs.

6. Tell the Ethereum wallet of the contract

Many contracts live in the Ethereum network. Wallets need to know a contract's address and interface before being able to interact with them. Let's tell Mist about our Login contract. Go to Contracts -> See Contract (top right, then bottom left).

Accomplish the fields as goes after:

  • Name: Login
  • Contract Address:
  • JSON Interface: the abi from Login.json . For convenience it is pasted below. Copy and paste it in Mist.

As a test, now attempt to send some Ether to the contract: Contracts -> Login -> Transfer Ether & Tokens . Send one Ether or any other amount less than your balance. You will need to provide the passphrase for your account.

7. Deploy the backend

Go to the backend folder and run:

8. Serve the frontend

Go to the frontend folder and run:

You may use any other elementary static HTTP server such as Python's SimpleHTTPServer . If you do so, make sure to serve the app in port 9080. This is significant due to CORS.

9. Test everything together!

Open your browser at http://localhost:9080. Now attempt to login by putting your Ethereum address in the input field. A challenge text will be generated. Go to the Mist (Ethereum Wallet) and go to the Login contract. To the right you will see "WRITE TO CONTRACT". Select the login function and paste the challenge in the text pack that shows up there. Then click on Execute . Input your passphrase and send the transaction.

Now switch back to the login page. After a few seconds the login will be finished and a welcome message will emerge. Voilà!

This example shows how a typical Ethereum user can use his existing Ethereum account to login to any third party website supporting Ethereum. And all of this is done without a central server. Albeit authentication is not performed by the possessor of the website, there is no central authority validating the user: it is the Ethereum network that does so.

Aside: Securing Applications with Auth0

Are you building a B2C, B2B, or B2E device? Auth0, can help you concentrate on what matters the most to you, the special features of your product. Auth0 can improve your product's security with state-of-the-art features like passwordless, breached password surveillance, and multifactor authentication.

Conclusion

We have taken a deeper look at Ethereum: a decentralized, blockchain-based framework for developing applications. Applications run on each knot, and each state transition produced by them is validated and recorded by the blockchain. The power of the treatment extends the concepts of Bitcoin to more than just monetary transactions or ordinary non-Turing accomplish contracts. The power of distributed apps is just beginning to be tapped. In the next post in the series we will take a look at an actual application developed on the Ethereum network: a two-factor authentication system for Ethereum users using a mobile validator application. Stay tuned!

An Introduction to Ethereum and Clever Contracts: a Programmable Blockchain

An Introduction to Ethereum and Clever Contracts: a Programmable Blockchain

Learn about verified, distributed computations in the cloud using Ethereum

Bitcoin took the world by surprise in the year two thousand nine and popularized the idea of decentralized secure monetary transactions. The concepts behind it, however, can be extended to much more than just digital currencies. Ethereum attempts to do that, marrying the power of decentralized transactions with a Turing-complete contract system. In this post we will take a closer look at how Ethereum works and what makes it different from Bitcoin and other blockchains. Read on!

This is post two from a three-post series about Ethereum. Read post one if you haven't done so.

"Ethereum marries the power of decentralized transactions with Turing-complete contracts!"

Introduction

In our previous post, we took a closer look at what blockchains are and how they help in making distributed, verifiable transactions a possibility. Our main example was Bitcoin: the world's most popular cryptocurrency. Millions of dollars, in the form of bitcoins, are traded each day, making Bitcoin one of the most prominent examples of the viability of the blockchain concept.

Have you ever found yourself asking this question: "what would happen if the provider of this service or application disappeared?" If you have, then learning about Ethereum can make a big difference for you. Ethereum is a platform to run decentralized applications: applications that do not rely on any central server. In this post we will explore how Ethereum works and build a ordinary PoC application related to authentication.

The Blockchain

A blockchain is a distributed, verifiable datastore. It works by marrying public-key cryptography with the nobel concept of the proof-of-work.

Each transaction in the blockchain is signed by the rightful proprietor of the resource being traded in the transaction. When fresh coins (resources) are created they are assigned to an proprietor. This possessor, in turn, can prepare fresh transactions that send those coins to others by simply embedding the fresh holder's public key in the transaction and then signing the transaction with his or her private-key. In this way, a verifiable link of transactions is created; each fresh transaction, with a fresh holder, pointing to the previous transaction, with the previous holder.

To order these transactions and prevent the double-spending problem, blockchains use the proof-of-work. The proof-of-work is a procedure that establishes a cost for grouping transactions in a certain order and adding them to the blockchain. These groups of transactions are called blocks. Each block points to a previous block in the chain, thus the name blockchain. By making blocks costly to make and making sure each fresh block points to the previous block, any potential attacker wanting to modify the history of transactions as represented by the blockchain must pay the cost of each block modified. Since blocks point to previous blocks, modifying an old block requires paying the cost for all blocks after it, making switches to old blocks very costly. A blockchain compounds the difficulty of modifying the blockchain by making the cost of creating blocks be of computational nature. In other words, to create fresh blocks, a certain amount of CPU power must be spent. Since CPU power is dependent on the advancement of technology, it is very hard for any single malicious entity to amass enough CPU power to outspend the rest of the network. A practical attack against a blockchain-based network usually requires a single entity controlling more than 50% of the combined CPU power of the network. The thicker the network, the tighter it is to perform.

But, as we eyed in our very first post in this series, blockchains are more than just that. Transactions, by their very nature, can do more than just send resources from holder A to proprietor B. In fact, the very act of doing so can be described as a very elementary program: the sender produces a computation (transaction) that can only be performed if the receiver produces, at some point in the future, the right inputs. In the case of a standard monetary transaction, the right input would be the proof of ownership from the receiver. In other words, the receiver can only spend the coins he received if he proves he is the rightful holder of those coins. It may seem a bit contrived but it indeed isn't. When you perform a wire transfer, you prove you are the possessor of an account through some sort of authentication procedure. For a home-banking system that could simply be a username and a password. At a bank, it would be your ID or debit-card. These procedures are usually hardwired into the system, but with blockchains it needn't be so.

In our very first post we also took a cursory look at this. We very first displayed how Bitcoin transactions are in fact puny programs that are intepreted by each knot using a elementary stack-based virtual-machine.

This virtual-machine, in the case of Bitcoin, is limited by design. It is not Turing-complete and can only perform a limited number of operations. Still, its plasticity opened up the possibility for many interesting uses. The petite script above, a.k.a. clever contract, is the standard "pay to pubkey hash" Bitcoin script. It describes a petite program that permits a sender to send coins to a receiver by verifying his identity with a public-key: the standard A to B monetary transaction, with ID cards substituted with public and private-keys. However, there's nothing preventing other uses, as long as you stick to the available operations supported by the virtual-machine. We took a look at a possible use in our previous post, where we created a perpetual-message system: immutable messages timestamped and forever embedded in the blockchain. The older they get, the tighter it is for them to ever be switched. Nifty.

Now, we'll take a look at how Ethereum amplifies these concepts.

Ethereum: a Programmable Blockchain

Albeit the concept of the blockchain was born out of the research into cryptocurrencies, they are much more powerful than just that. A blockchain essentially encodes one thing: state transitions. Whenever someone sends a coin in Bitcoin to someone else, the global state of the blockchain is switched. Moments before account A held fifty coins, now account A is empty and account B holds fifty coins. Furthermore, the blockchain provides a cryptographically secure way of performing these state transitions. In other words, not only the state of the blockchain can be verified by any outside party, but any state transitions initiated by blockchain users can only be performed in a secure, verifiable manner.

An interesting way to think of a blockchain is as a never-halting computation: fresh instructions and data are fetched from a pool, the pool of unconfirmed transactions. Each result is recorded in the blockchain, which forms the state of the computation. Any single snapshot of the blockchain is the state of the computation at that point.

All software systems deal in some way or another with state transitions. So what if we could generalize the state transitions inwards a blockchain into any software we could think of. Are there any inherent limitations in the blockchain concept that would prevent state transitions from being something different than sending coins? The reaction is no. Blockchains deal with reaching consensus for decentralized computations, it does not matter what those computations are. And this is exactly what the Ethereum network brings to the table: a blockchain that can perform any computation as part of a transaction.

It is effortless to get lost in the world of cryptocurrencies and ordinary exchanges of value inbetween two users, but there are many other applications where distributed, secure computations make sense. It is this system that permits for things like:

  • Secure deposits that get returned to the payer if conditions are met (or not)
  • Money that cannot be spent unless a certain number of users agree to spending it
  • Money that can only be spent after producing outward data that sates rules set in the script

Given a Turing-complete system for computations associated to a blockchain, many more applications are possible. This is Ethereum.

Take a look at the things the community is working on to get a sense of the many useful ideas that can be run as decentralized applications.

Ether

Albeit Ethereum brings general computations to the blockchain, it still makes use of a "coin". Its coin is called "ether", and, as any coin, it is a number that can be stored into account addresses and can be spent or received as part of transactions or block generation. To run certain transactions, users must spend Ether. But why is this the case?

A Turing-complete language is a language that, by definition, can perform any computation. In other words, if there is an algorithm for something, it can express it. Ethereum scripts, called wise contracts, can thus run any computation. Computations are run as part of a transaction. This means each knot in the network must run computations. Any machine capable of running a Turing-complete language (i.e. a Turing machine) has one problem: the halting problem. The halting problem essentially states that no Turing machine can determine beforehand whether a program run in it will either terminate (halt) or run forever. In other words, the only way of finding out if a chunk of code loops forever or not is by running that code. This poses a big problem for Ethereum: no single knot can get caught up in an infinite loop running a program. Doing so would essentially stop the evolution of the blockchain and halt all transactions. But there is a way around that.

Since computation is costly, and it is in fact rewarded by providing knots that produce blocks ether (like Bitcoin), what better way to limit computations than by requiring ether for running them. Thus Ethereum solves the problem of denial of service attacks through malicious (or bugged) scripts that run forever. Every time a script is run, the user requesting the script to run must set a limit of ether to spend in it. Ether is consumed by the script as it runs. This is ensured by the virtual machine that runs the scripts. If the script cannot finish before running out of ether, it is halted at that point. In Ethereum the ether assigned to an script as a limit is known as gas (as in gasoline).

As ether represents value, it can be converted to other coins. Exchanges exist to trade ether for other coins. This gives ether a real money valuation, much like coins from Bitcoin.

Wise Contracts

Wise contracts are the key element of Ethereum. In them any algorithm can be encoded. Wise contracts can carry arbitrary state and can perform any arbitrary computations. They are even able to call other clever contracts. This gives the scripting facilities of Ethereum tremendous plasticity.

Wise contracts are run by each knot as part of the block creation process. Just like Bitcoin, block creation is the moment where transactions actually take place, in the sense that once a transaction takes place inwards a block, global blockchain state is switched. Ordering affects state switches, and just like in Bitcoin, each knot is free to choose the order of transactions inwards a block. After doing so (and executing the transactions), a certain amount of work must be performed to create a valid block. In contrast to Bitcoin, Ethereum goes after a different pattern for selecting which blocks get added to the valid blockchain. While in Bitcoin the longest chain of valid blocks is always the rightful blockchain, Ethereum goes after a protocol called GHOST (in fact a variation thereof). The GHOST protocol permits for stale blocks, blocks that were computed by other knots but that would otherwise be discarded since others have computed newer blocks, to be integrated into the blockchain, reducing wasted computing power and enlargening incentives for slower knots. It also permits for swifter confirmation of transactions: whereas in Bitcoin blocks are usually created every ten minutes, in Ethereum blocks are created within seconds. Much discussion has gone into whether this protocol is an improvement over the much simpler "fastest longest chain" protocol in Bitcoin, however this discussion is out of scope for this article. For now this protocol emerges to run with success in Ethereum.

An significant aspect of how clever contracts work in Ethereum is that they have their own address in the blockchain. In other words, contract code is not carried inwards each transaction that makes use of it. This would quickly become unwieldy. Instead, a knot can create a special transaction that assigns an address to a contract. This transaction can also run code at the moment of creation. After this initial transaction, the contract becomes forever a part of the blockchain and its address never switches. Whenever a knot wants to call any of the methods defined by the contract, it can send a message to the address for the contract, specifying data as input and the method that must be called. The contract will run as part of the creation of newer blocks up to the gas limit or completion. Contract methods can come back a value or store data. This data is part of the state of the blockchain.

State

An interesting aspect of contracts being able to store data is how can that be treated in an efficient way. If state is mutated by contracts, and the nature of the blockchain ensures that state is always consistent across all knots, then all knots must have access to the entire state stored in the blockchain. Since the size of this storage in unlimited in principle, this raises questions with regards to how to treat this effectively as the network scales. In particular, how can smaller and less powerful knots make use of the Ethereum network if they can't store the entire state? How can they perform computations? To solve this, Ethereum makes use of something called Merkle Patricia Trees.

A Merkle Patricia Tree is a special kind of data structure that can store cryptographically authenticated data in the form of keys and values. A Merkle Patricia Tree with a certain group of keys and values can only be constructed in a single way. In other words, given the same set of keys and values, two Merkle Patricia Trees constructed independently will result in the same structure bit-by-bit. A special property of Merkle Patricia Trees is that the hash of the root knot (the very first knot in the tree) depends on the hashes of all sub-nodes. This means that any switch to the tree results in a fully different root hash value. Switches to a leaf knot cause all hashes leading to the root hash through that and sister branches to be recomputed. What we have described is in fact the "Merkle" part of the tree, the "Patricia" part comes from the way keys are located in the tree. Patricia trees are attempts where any knot that is an only child is merged with its parent. They are also known as "radix trees" or "compact prefix trees". A trie is a tree structure that uses prefixes of the keys to determine where to put each knot.

The Merkle Patricia Trees implemented in Ethereum have other optimizations that overcome inefficiencies inherent to the ordinary description introduced here.

For our purposes, the Merkle aspect of the trees are what matter in Ethereum. Rather than keeping the entire tree inwards a block, the hash of its root knot is embedded in the block. If some malicious knot were to tamper with the state of the blockchain, it would become evident as soon as other knots computed the hash of the root knot using the tampered data. The resulting hash would simply not match with the one recorded in the block. At this point we should find ourselves asking a big question: why not simply take the hash of the data? Merkle Patricia Trees are used in Ethereum for a different, but very significant reason: most of the time, knots do not need a utter copy of the entire state of the system. Rather, they want to have a partial view of the state, accomplish enough to perform any necessary computations for newer blocks or to read the state from some specific address. Since no computations usually require access to the entire state stored in the blockchain, downloading all state would be superfluous. In fact, if knots had to do this, scalability would be a serious concern as the network expanded. To verify a partial lump of the state at a given point, a knot need only download the data necessary for a branch of the tree and the hashes of its siblings. Any switch in the data stored at a leaf would require a malicious knot to be able to carry a preimage attack against the hashing algorithm of the tree (to find the values for the siblings that combined with the modified data produce the same root hash as the one stored in the block).

All of this permits efficient operations on the state of the blockchain, while at the same time keeping its actual (potentially big) data separate from the block, still the center chunk of the security scheme of the blockchain.

History

Much like Bitcoin, the blockchain can be used to find the state of the system at any point in time. This can be done by replaying each transaction from the very very first block up to the point in question. However, in contrast to Bitcoin, most knots do not keep a total copy of the data for every point in time. Ethereum permits for old data to be pruned from the blockchain. The blockchain remains consistent as long as the blocks are valid, and data is stored outside of the blocks, so technically it is not required to verify the proof-of-work chain. In contrast to Bitcoin, where to find the balance of an account a knot must replay all transactions leading up to that point, Ethereum stores state by keeping the root hash of the Merkle Patricia Tree in each block. As long as the data for the last block (or any past blocks) is available, future operations can be performed in the Ethereum network. In other words, it is not necessary for the network to replay old transactions, since their result is already available. This would be akin to storing the balance of each account in each block in the Bitcoin network.

There are, however, knots that store the entire copy of the historical state of the blockchain. This serves for historical and development purposes.

Solidity and a Sample Wise Contract

Wise contracts run on the Ethereum Virtual Machine, which in turn runs on each knot. However powerful, the Ethereum Virtual Machine works at a level too low to be convenient to directly program (like most VMs). For this reason, several languages for writing contracts have been developed. Of these, the most popular one is Solidity.

Solidity is a JavaScript-like language developed specifically for writing Ethereum Brainy Contracts. The Solidity compiler turns this code into Ethereum Virtual Machine bytecode, which can then be sent to the Ethereum network as a transaction to be given its own address.

To better understand Solidity, let's take a look at one example:

This is a ordinary proprietor claims contract. An proprietor claims contract is a contract that lets any address possessor to record arbitrary key-value data. The nature of the blockchain certifies that the holder of certain address is the only one who can set claims in connection to that address. In other words, the possessor claims contract permits anyone who wants to perform transactions with one of your addresses to know your claims. For example, you can set a claim called "email", so that anyone that wants to perform a transaction with you can get your email address. This is useful, since an Ethereum address is not strapped to an identity (or email address), only to its private-key.

The contract is as ordinary as possible. Very first there is the contract keyword that signals the beginning of a contract. Then comes OwnerClaims , the contract name. Inwards the contract there are two types of elements: variables and functions.

Among variables there are two types as well: constants and writable variables. Constants are just that: they can never be switched. Writable variables, however, save state in the blockchain. It is these variables that encode the state saved in the blockchain, nothing more.

Functions are lumps of code that can either read or modify state. Read-only functions are also marked as constant in the code and do not require gas to run. On the other mitt, functions that mutate state require gas , since state transitions must be encoded in fresh blocks of the blockchain (and these cost work to produce).

Values returned from functions are returned to the caller.

The owners variable in our contract is a map, also known as associative array or dictionary. It matches a key to a value. In our case, the key is an address . Addresses in Ethereum are the identifiers of either normal accounts (usually managed by users) or other contracts. When an proprietor of an address determines to set a claim, it is this mapping from address to a claim that we are interested in. In fact, we are not simply mapping an address to a claim, but to a group of key-values that constitute a group of claims (in the form of another map). This is convenient because an address proprietor might want to make several details about himself known to others. In other words, address owners might want to make their email address and their cellphone number available. To do so, they might create two claims: one under the "email" key, and the other under the "phone" key.

The contract leaves to each possessor to determine what entries to create, so the names of the keys are not known in advance. For this reason, a special "default" key is available, so any reader might know at least one claim if he doesn't know what keys are available. In truth, this key is also in place for a different reason: Solidity does not make it practical to come back bulk data from functions. In other words, it is not effortless to comeback all claims connected to an address in a single function call. In fact, the mapping type does not even have an iteration operation (albeit one can be coded if needed), so it is not possible to know what keys are inwards a mapping. It is left as an exercise for the reader to find ways to improve this if needed.

Current and Potential Uses

What we just witnessed with our ordinary example gave us a taste of what is possible with Ethereum. Do note it has nothing to do with exchanging money! Albeit ether is necessary to perform mutations on the network, our contract is rigorously worried with securely establishing a series of claims connected to an Ethereum address. Nothing more. Not only the result is mathematically verifiable (no other person other than the possessor of the address can set claims), but is also very hard to erase: it is recorded in a globally distributed database with no central knot!

Having access to a distributed, Turing-complete computing engine with verifiable semantics opens a world of possibilities. Let's take a look at interesting ideas already implemented or under implementation in Ethereum.

The Decentralized Autonomous Organization (DAO)

The DAO is, literally, an organization. It has members, it has a central authority (the holder), members can cast votes and the organization itself can perform any operations any other account could do. Members can create proposals, in the form of transactions, and voting members from the organization can cast votes to either approve the proposal or dismiss it. Proposals have a limit of time after which votes are counted and a decision is taken. The decision to perform or dismiss the proposal is carried by the contract of the DAO. In other words, no central authority can determine the fate of a proposal, and this is certified by the contract and the nature of the blockchain. The holder can be switched by a proposal. The only privilege the possessor has is the capability to add or eliminate voting members.

In fact, the DAO we have just described is only one of the possible implementations. There are many improvements or modifications that can be performed to create whatever type of hierarchy. A Congress, a shareholder association, a democracy, these are all possibilities.

To learn more about DAOs, the main Ethereum website has a entire area dedicated to them.

A Central Bank or Your Own Coin

Albeit ether has real value and can be traded for other coins, other coin systems can be implemented on top of Ethereum. For example, you could design your own coin with a central authority that can create money, authorize transactions or arbitrate disputes. Take a look at a possible implementation by following this tutorial.

A Crowdfunding System

Crowdfunding lets donors send money for a project that has not been finished or even embarked. In this way, funding for projects of different sizes is possible. The amount of money donated for the project is what usually determines the fate of the project. The usual problem with crowdfunding is the need for a central figure to hold founders responsible in case a project is not satisfactorily ended after funding, or to make sure all the money donated actually arrives at the palms of the founders. In other words, crowdfunding requires a considerable amount of trust to be placed in both the founder of a project and the central authority. But with Ethereum this needn't be so.

With Ethereum, it is possible to design a contract that takes a certain amount of money from donors and stores it in an account. The funds in this account can be kept away from the arms of the founders until they provide proof of their progress. When a certain milestone is achieved, the funds can be released. On the other arm, if the founders fail to provide proof of their progress in a reasonable timeframe, donated funds can be automatically returned to the donors. All of this logic of treating funds can be performed without trust in a central authority. Donors can be sure their money won't be spent until proof-of-work is provided, and they can be sure they will always get their money back otherwise. They can also be 100% certain each donor's money will go into the right palms.

Prove That You Said Something in the Past

An interesting aspect of the blockchain is that its mere existence is proof that every transaction in it happened at some point in time. Albeit a certain variance in the timestamp of a transaction is expected (as it will get set by the knot that creates the block that contains it), anything recorded in the blockchain happened at some point in the past. In fact, it is possible to assert it happened before or after other events also recorded or linked in some way to the blockchain. Since the blockchain permits for arbitrary state to be stored in it, it is possible to link an arbitrary message to an address. Anyone can confirm by looking at the blockchain that that message was produced at some point in the past by the proprietor of an address. All the holder needs to do is prove he is the possessor of the address that produced the same message in the past. This can simply be done by performing a transaction using the same address as before.

Suppose you wrote a book. Before sending copies to your friends and editors, you determine to prove it was you who wrote it by storing its proof of existence in the blockchain. If your book gets plagiarized before getting published (by one of the editors, for example), you can prove it was you who wrote it by demonstrating you linked its hash to an Ethereum address. When anyone wants to confirm you own the address, you can demonstrate it to them through any transaction of their choice. The blockchain ensures any person in doubt can see the association inbetween the hash of the book and your address, proving you had access to the total copy of the book at some point in the past.

Proof of Existence for Digital Assets

The concept of the previous example can be extended to a proof of the existence of anything that can be hashed. In other words, anything with a single digital representation can be hashed and stored in the blockchain, just like the arbitrary message from above. Later, any user can query whether the element was hashed and added to the blockchain.

Here is one working example of this concept.

There are many more examples of things that can be implemented with Ethereum, check them out!

Aside: A Elementary Login System using Ethereum

One of the cool things about Ethereum is that addresses are, by definition, systems to prove ownership. Whomever can perform operations with an Ethereum address is the rightful holder of that address. This is, of course, the consequence of the underlying public-key infrastructure used to verify transactions. We can exploit this to create a login system based on Ethereum addresses. Let's see how.

Any login system is mainly worried with creating a unique identity that can be managed by whomever can pass a certain "login challenge". The login challenge is the method to prove that the same entity that created the account in the very first place is the same entity doing operations now. Most systems rely on the classic username + password login challenge: a fresh user registers by choosing a unique username and a password, then, anytime the system requires proof that the user is in fact who he says he is, it can request the password for that username. This system works. But with Ethereum we already have a system for proving identities: public and private keys!

We'll design a ordinary contract that can be used by any user to validate his ownership of an address. The login process will be as goes after:

  1. A user accesses a website that requires him or her to login. When the user is not logged in, the website requests the user to come in his or her Ethereum address.
  2. The backend for the website receives the address for the user and creates a challenge string and a JWT. Both of these are sent back to the user.
  3. The user sends the challenge string to the Login contract and stores the JWT for later use locally.
  4. The backend listens for login attempts using the challenge string at the Ethereum network. When an attempt with the challenge string for the right user is seen, it can assume the user has proved his or her identity. The only person that can send a message with an Ethereum address is the holder of the private key, and the only user that knows the challenge string is the user that received the challenge through the login website.
  5. The user gets notified or polls the website backend for confirmation of his or her successful login. The user then proceeds to use the JWT issued in step two for accessing the website. Alternatively, a fresh JWT can be issued after a successful login.

To that end, this is the Ethereum contract we will use:

The contract is utterly ordinary. Events are special elements in Solidity that are mapped to a system in Ethereum that permits special data to be logged. Events are generally observed by clients monitoring the evolution of the blockchain. This permits deeds to be taken by clients when events are created. In our case, whenever a user attempts to login, an event created with the challenge is broadcast. We only care about receiving a call from the rightful proprietor of the Ethereum address that was passed to the third party website. And, thanks to the way Ethereum works, we can be sure the sender was the one who performed the call.

In addition to the sender's address, the challenge is also broadcast. This means anyone watching the blockchain now knows the challenge. However, this cannot be used on its own to impersonate a user: a user can only interact with the backend through the session JWT. This means an attacker must know three lumps of information to impersonate a user: the Ethereum address, the challenge AND the JWT issued with the challenge. Since JWTs are signed, an attacker cannot create a valid JWT to impersonate an user, even with access to the challenge.

What goes after is our backend code. Very first, let's see how to see for Ethereum events:

The login_contract.js file contains what is needed to inter-operate with our contract. Let's take a look:

Web3 is the official client library to interact with Ethereum knots. An Ethereum knot is what actually connects to the rest of the Ethereum network. It performs "mining" (block generation), transaction operations (create and send) and block verification.

The Login.json file is generated by the Solidity contract compiler, part of the standard Ethereum development instruments. The Solidity compiler takes Solidity source code and turns it into Ethereum Virtual Machine bytecode and an interface description file that can be used by Web3 to interact with the contract once it is uploaded to the network.

And here are our HTTP endpoints:

The /login endpoint receives a login request carrying an Ethereum address for the user that wants to login. The user must be the holder of such Ethereum address. It generates a JWT and a challenge. The JWT can only be used to access the /finishLogin endpoint.

Before the user can call the /finishLogin endpoint he or she must prove his or her identity by making a call to the login method of the Login contract. The login method receives a single parameter: the challenge returned by the /login endpoint. He must perform this call using the same account address that was passed to the /login endpoint. He or she can use any Ethereum wallet or client to do this.

After making the call to the login method of the Login contract, the user can accomplish the login by using the /finishLogin endpoint. He or she must pass the JWT returned by the /login endpoint to it. If the login is successful, a fresh JWT with total access is returned. Otherwise, if the login is still pending, an accepted HTTP status (202) is returned signalling decent verification of the login request is still pending. If the JWT passed to /finishLogin is invalid, an unauthorized HTTP status code is returned (401).

After the /finishLogin endpoint is called and the login process is ended, the returned JWT can be used to access other parts of the API. In this case, the /apiTest endpoint is available. It simply comes back "It works!" packaged in a JSON object if the user is logged-in.

Running the Example

Building and deploying the example is not as straightforward as it may seem due to the nature of Ethereum and current development contraptions. Here are the steps we used to test the example above.

1. Get an Ethereum knot client

There are several Ethereum knot clients. A popular one is go-ethereum, a client written in Go. Download it and install it.

Ethereum, as other cryptocurrencies do, has different versions of the blockchain with different parameters. There are essentially two blockchains: the main official blockchain and a test blockchain. The main blockchain never undoes operations once they are confirmed. Since some operations require money, the main blockchain is not ideal for testing. The test blockchain, on the other forearm, is much less stringent about forks and switches. It is also simpler to mine "Ether", Ethereum's currency.

We could use the test network for our example here. However, running a client knot for any of the public networks is problematic for one reason: to be able to begin doing transactions, the client must very first verify all previous transactions in the blockchain. That means that bootstrapping a fresh client knot takes fairly a bit of time. Fortunately there is an alternative: we can create a fresh, pristine private Ethereum blockchain to run our tests. To do so, run go-ethereum using the following instruction line:

Two. Create a fresh Ethereum account to mine some Ether

The geth instruction can also be used to interact with a running client. Launch an interactive console connected to the running client:

The IPC file mentioned in the guideline can be found in the output from running the knot in our very first step. Look for the line that reads:

Now in the Geth console type:

After hitting Come in a prompt will emerge requesting a passphrase. This is the passphrase that will be used to perform any operations using this account. You can think of this as the passphrase required to decrypt the private-key used to sign Ethereum transactions. Do not leave the prompt empty, choose a plain passphrase for testing instead. A fresh Ethereum address will be returned by the function. If at any point you leave behind this address, you can list accounts by examining individual.listAccounts (it's a variable, not a function, so don't add () at the end).

The geth console is a JavaScript interpreter.

Three. Embark mining some Ether

Now it's time to add some Ether to our fresh account. Ether is required to perform operations in the Ethereum blockchain, so it is necessary to perform this step. Ether can be gathered in two ways: by receiving it from another account or by mining it. Since this is a private network, we will need to mine it. Don't worry, the private network is by default configured to be able to mine Ether lightly. Let's do it:

Now wait a few seconds (or minutes depending on your hardware) and then confirm you have some Ether in your account:

Four. Compile and deploy our Login contract

To simplify the process of compiling and deploying contracts, we will use truffle . Truffle is a development framework for Ethereum, simplifying many common tasks. Install it:

Before using truffle to deploy contracts, it is necessary to "unlock" our account in our Ethereum knot client. Unlocking is the process of decrypting the private-key and holding it in memory using the passphrase used to create it. This permits any client libraries (such as Truffle) connecting to the knot to make operations on behalf of the unlocked account. Go to the geth console and type:

Now switch to the solidity directory of our sample application. Edit the truffle.js file and set your freshly created address as the from key. Then run:

The migrate instruction compiles and deploys the contracts to the Ethereum network on behalf of the account set in truffle.js . As a result you will get the address of the freshly deployed contract. Take note of it.

Five. Install an Ethereum wallet

Ethereum wallets are convenient interfaces for users to interact with the Ethereum network. Sending and receiving Ether, deploying contracts or making calls to them are all operations usually supported by wallets. Mist is the official Ethereum wallet. Download it and install it.

Once installed, we will need to tell Mist to connect to our private network rather than the public main or test networks. To do this, run Mist from the guideline line like so:

The IPC file is the same file used by the geth console and can be gathered from the geth output logs.

6. Tell the Ethereum wallet of the contract

Many contracts live in the Ethereum network. Wallets need to know a contract's address and interface before being able to interact with them. Let's tell Mist about our Login contract. Go to Contracts -> See Contract (top right, then bottom left).

Finish the fields as goes after:

  • Name: Login
  • Contract Address:
  • JSON Interface: the abi from Login.json . For convenience it is pasted below. Copy and paste it in Mist.

As a test, now attempt to send some Ether to the contract: Contracts -> Login -> Transfer Ether & Tokens . Send one Ether or any other amount less than your balance. You will need to provide the passphrase for your account.

7. Deploy the backend

Go to the backend folder and run:

8. Serve the frontend

Go to the frontend folder and run:

You may use any other ordinary static HTTP server such as Python's SimpleHTTPServer . If you do so, make sure to serve the app in port 9080. This is significant due to CORS.

9. Test everything together!

Open your browser at http://localhost:9080. Now attempt to login by putting your Ethereum address in the input field. A challenge text will be generated. Go to the Mist (Ethereum Wallet) and go to the Login contract. To the right you will see "WRITE TO CONTRACT". Select the login function and paste the challenge in the text pack that shows up there. Then click on Execute . Input your passphrase and send the transaction.

Now switch back to the login page. After a few seconds the login will be finished and a welcome message will emerge. Voilà!

This example shows how a typical Ethereum user can use his existing Ethereum account to login to any third party website supporting Ethereum. And all of this is done without a central server. Albeit authentication is not performed by the holder of the website, there is no central authority validating the user: it is the Ethereum network that does so.

Aside: Securing Applications with Auth0

Are you building a B2C, B2B, or B2E implement? Auth0, can help you concentrate on what matters the most to you, the special features of your product. Auth0 can improve your product's security with state-of-the-art features like passwordless, breached password surveillance, and multifactor authentication.

Conclusion

We have taken a deeper look at Ethereum: a decentralized, blockchain-based framework for developing applications. Applications run on each knot, and each state transition produced by them is validated and recorded by the blockchain. The power of the treatment extends the concepts of Bitcoin to more than just monetary transactions or elementary non-Turing accomplish contracts. The power of distributed apps is just beginning to be tapped. In the next post in the series we will take a look at an actual application developed on the Ethereum network: a two-factor authentication system for Ethereum users using a mobile validator application. Stay tuned!

An Introduction to Ethereum and Brainy Contracts: a Programmable Blockchain

An Introduction to Ethereum and Brainy Contracts: a Programmable Blockchain

Learn about verified, distributed computations in the cloud using Ethereum

Bitcoin took the world by surprise in the year two thousand nine and popularized the idea of decentralized secure monetary transactions. The concepts behind it, however, can be extended to much more than just digital currencies. Ethereum attempts to do that, marrying the power of decentralized transactions with a Turing-complete contract system. In this post we will take a closer look at how Ethereum works and what makes it different from Bitcoin and other blockchains. Read on!

This is post two from a three-post series about Ethereum. Read post one if you haven't done so.

"Ethereum marries the power of decentralized transactions with Turing-complete contracts!"

Introduction

In our previous post, we took a closer look at what blockchains are and how they help in making distributed, verifiable transactions a possibility. Our main example was Bitcoin: the world's most popular cryptocurrency. Millions of dollars, in the form of bitcoins, are traded each day, making Bitcoin one of the most prominent examples of the viability of the blockchain concept.

Have you ever found yourself asking this question: "what would happen if the provider of this service or application disappeared?" If you have, then learning about Ethereum can make a big difference for you. Ethereum is a platform to run decentralized applications: applications that do not rely on any central server. In this post we will explore how Ethereum works and build a ordinary PoC application related to authentication.

The Blockchain

A blockchain is a distributed, verifiable datastore. It works by marrying public-key cryptography with the nobel concept of the proof-of-work.

Each transaction in the blockchain is signed by the rightful possessor of the resource being traded in the transaction. When fresh coins (resources) are created they are assigned to an possessor. This possessor, in turn, can prepare fresh transactions that send those coins to others by simply embedding the fresh possessor's public key in the transaction and then signing the transaction with his or her private-key. In this way, a verifiable link of transactions is created; each fresh transaction, with a fresh holder, pointing to the previous transaction, with the previous proprietor.

To order these transactions and prevent the double-spending problem, blockchains use the proof-of-work. The proof-of-work is a procedure that establishes a cost for grouping transactions in a certain order and adding them to the blockchain. These groups of transactions are called blocks. Each block points to a previous block in the chain, thus the name blockchain. By making blocks costly to make and making sure each fresh block points to the previous block, any potential attacker wanting to modify the history of transactions as represented by the blockchain must pay the cost of each block modified. Since blocks point to previous blocks, modifying an old block requires paying the cost for all blocks after it, making switches to old blocks very costly. A blockchain compounds the difficulty of modifying the blockchain by making the cost of creating blocks be of computational nature. In other words, to create fresh blocks, a certain amount of CPU power must be spent. Since CPU power is dependent on the advancement of technology, it is very hard for any single malicious entity to amass enough CPU power to outspend the rest of the network. A practical attack against a blockchain-based network usually requires a single entity controlling more than 50% of the combined CPU power of the network. The fatter the network, the tighter it is to perform.

But, as we spotted in our very first post in this series, blockchains are more than just that. Transactions, by their very nature, can do more than just send resources from possessor A to proprietor B. In fact, the very act of doing so can be described as a very ordinary program: the sender produces a computation (transaction) that can only be performed if the receiver produces, at some point in the future, the right inputs. In the case of a standard monetary transaction, the right input would be the proof of ownership from the receiver. In other words, the receiver can only spend the coins he received if he proves he is the rightful proprietor of those coins. It may seem a bit contrived but it indeed isn't. When you perform a wire transfer, you prove you are the proprietor of an account through some sort of authentication procedure. For a home-banking system that could simply be a username and a password. At a bank, it would be your ID or debit-card. These procedures are usually hardwired into the system, but with blockchains it needn't be so.

In our very first post we also took a cursory look at this. We very first demonstrated how Bitcoin transactions are in fact petite programs that are intepreted by each knot using a ordinary stack-based virtual-machine.

This virtual-machine, in the case of Bitcoin, is limited by design. It is not Turing-complete and can only perform a limited number of operations. Still, its plasticity opened up the possibility for many interesting uses. The petite script above, a.k.a. clever contract, is the standard "pay to pubkey hash" Bitcoin script. It describes a puny program that permits a sender to send coins to a receiver by verifying his identity with a public-key: the standard A to B monetary transaction, with ID cards substituted with public and private-keys. However, there's nothing preventing other uses, as long as you stick to the available operations supported by the virtual-machine. We took a look at a possible use in our previous post, where we created a perpetual-message system: immutable messages timestamped and forever embedded in the blockchain. The older they get, the stiffer it is for them to ever be switched. Nifty.

Now, we'll take a look at how Ethereum amplifies these concepts.

Ethereum: a Programmable Blockchain

Albeit the concept of the blockchain was born out of the research into cryptocurrencies, they are much more powerful than just that. A blockchain essentially encodes one thing: state transitions. Whenever someone sends a coin in Bitcoin to someone else, the global state of the blockchain is switched. Moments before account A held fifty coins, now account A is empty and account B holds fifty coins. Furthermore, the blockchain provides a cryptographically secure way of performing these state transitions. In other words, not only the state of the blockchain can be verified by any outside party, but any state transitions initiated by blockchain users can only be performed in a secure, verifiable manner.

An interesting way to think of a blockchain is as a never-halting computation: fresh instructions and data are fetched from a pool, the pool of unconfirmed transactions. Each result is recorded in the blockchain, which forms the state of the computation. Any single snapshot of the blockchain is the state of the computation at that point.

All software systems deal in some way or another with state transitions. So what if we could generalize the state transitions inwards a blockchain into any software we could think of. Are there any inherent limitations in the blockchain concept that would prevent state transitions from being something different than sending coins? The reaction is no. Blockchains deal with reaching consensus for decentralized computations, it does not matter what those computations are. And this is exactly what the Ethereum network brings to the table: a blockchain that can perform any computation as part of a transaction.

It is effortless to get lost in the world of cryptocurrencies and plain exchanges of value inbetween two users, but there are many other applications where distributed, secure computations make sense. It is this system that permits for things like:

  • Secure deposits that get returned to the payer if conditions are met (or not)
  • Money that cannot be spent unless a certain number of users agree to spending it
  • Money that can only be spent after producing outer data that sates rules set in the script

Given a Turing-complete system for computations associated to a blockchain, many more applications are possible. This is Ethereum.

Take a look at the things the community is working on to get a sense of the many useful ideas that can be run as decentralized applications.

Ether

Albeit Ethereum brings general computations to the blockchain, it still makes use of a "coin". Its coin is called "ether", and, as any coin, it is a number that can be stored into account addresses and can be spent or received as part of transactions or block generation. To run certain transactions, users must spend Ether. But why is this the case?

A Turing-complete language is a language that, by definition, can perform any computation. In other words, if there is an algorithm for something, it can express it. Ethereum scripts, called brainy contracts, can thus run any computation. Computations are run as part of a transaction. This means each knot in the network must run computations. Any machine capable of running a Turing-complete language (i.e. a Turing machine) has one problem: the halting problem. The halting problem essentially states that no Turing machine can determine beforehand whether a program run in it will either terminate (halt) or run forever. In other words, the only way of finding out if a chunk of code loops forever or not is by running that code. This poses a big problem for Ethereum: no single knot can get caught up in an infinite loop running a program. Doing so would essentially stop the evolution of the blockchain and halt all transactions. But there is a way around that.

Since computation is costly, and it is in fact rewarded by providing knots that produce blocks ether (like Bitcoin), what better way to limit computations than by requiring ether for running them. Thus Ethereum solves the problem of denial of service attacks through malicious (or bugged) scripts that run forever. Every time a script is run, the user requesting the script to run must set a limit of ether to spend in it. Ether is consumed by the script as it runs. This is ensured by the virtual machine that runs the scripts. If the script cannot finish before running out of ether, it is halted at that point. In Ethereum the ether assigned to an script as a limit is known as gas (as in gasoline).

As ether represents value, it can be converted to other coins. Exchanges exist to trade ether for other coins. This gives ether a real money valuation, much like coins from Bitcoin.

Clever Contracts

Brainy contracts are the key element of Ethereum. In them any algorithm can be encoded. Wise contracts can carry arbitrary state and can perform any arbitrary computations. They are even able to call other clever contracts. This gives the scripting facilities of Ethereum tremendous plasticity.

Wise contracts are run by each knot as part of the block creation process. Just like Bitcoin, block creation is the moment where transactions actually take place, in the sense that once a transaction takes place inwards a block, global blockchain state is switched. Ordering affects state switches, and just like in Bitcoin, each knot is free to choose the order of transactions inwards a block. After doing so (and executing the transactions), a certain amount of work must be performed to create a valid block. In contrast to Bitcoin, Ethereum goes after a different pattern for selecting which blocks get added to the valid blockchain. While in Bitcoin the longest chain of valid blocks is always the rightful blockchain, Ethereum goes after a protocol called GHOST (in fact a variation thereof). The GHOST protocol permits for stale blocks, blocks that were computed by other knots but that would otherwise be discarded since others have computed newer blocks, to be integrated into the blockchain, reducing wasted computing power and enlargening incentives for slower knots. It also permits for quicker confirmation of transactions: whereas in Bitcoin blocks are usually created every ten minutes, in Ethereum blocks are created within seconds. Much discussion has gone into whether this protocol is an improvement over the much simpler "fastest longest chain" protocol in Bitcoin, however this discussion is out of scope for this article. For now this protocol shows up to run with success in Ethereum.

An significant aspect of how wise contracts work in Ethereum is that they have their own address in the blockchain. In other words, contract code is not carried inwards each transaction that makes use of it. This would quickly become unwieldy. Instead, a knot can create a special transaction that assigns an address to a contract. This transaction can also run code at the moment of creation. After this initial transaction, the contract becomes forever a part of the blockchain and its address never switches. Whenever a knot wants to call any of the methods defined by the contract, it can send a message to the address for the contract, specifying data as input and the method that must be called. The contract will run as part of the creation of newer blocks up to the gas limit or completion. Contract methods can comeback a value or store data. This data is part of the state of the blockchain.

State

An interesting aspect of contracts being able to store data is how can that be treated in an efficient way. If state is mutated by contracts, and the nature of the blockchain ensures that state is always consistent across all knots, then all knots must have access to the entire state stored in the blockchain. Since the size of this storage in unlimited in principle, this raises questions with regards to how to treat this effectively as the network scales. In particular, how can smaller and less powerful knots make use of the Ethereum network if they can't store the entire state? How can they perform computations? To solve this, Ethereum makes use of something called Merkle Patricia Trees.

A Merkle Patricia Tree is a special kind of data structure that can store cryptographically authenticated data in the form of keys and values. A Merkle Patricia Tree with a certain group of keys and values can only be constructed in a single way. In other words, given the same set of keys and values, two Merkle Patricia Trees constructed independently will result in the same structure bit-by-bit. A special property of Merkle Patricia Trees is that the hash of the root knot (the very first knot in the tree) depends on the hashes of all sub-nodes. This means that any switch to the tree results in a entirely different root hash value. Switches to a leaf knot cause all hashes leading to the root hash through that and sister branches to be recomputed. What we have described is in fact the "Merkle" part of the tree, the "Patricia" part comes from the way keys are located in the tree. Patricia trees are attempts where any knot that is an only child is merged with its parent. They are also known as "radix trees" or "compact prefix trees". A trie is a tree structure that uses prefixes of the keys to determine where to put each knot.

The Merkle Patricia Trees implemented in Ethereum have other optimizations that overcome inefficiencies inherent to the ordinary description introduced here.

For our purposes, the Merkle aspect of the trees are what matter in Ethereum. Rather than keeping the entire tree inwards a block, the hash of its root knot is embedded in the block. If some malicious knot were to tamper with the state of the blockchain, it would become evident as soon as other knots computed the hash of the root knot using the tampered data. The resulting hash would simply not match with the one recorded in the block. At this point we should find ourselves asking a big question: why not simply take the hash of the data? Merkle Patricia Trees are used in Ethereum for a different, but very significant reason: most of the time, knots do not need a total copy of the entire state of the system. Rather, they want to have a partial view of the state, accomplish enough to perform any necessary computations for newer blocks or to read the state from some specific address. Since no computations usually require access to the entire state stored in the blockchain, downloading all state would be superfluous. In fact, if knots had to do this, scalability would be a serious concern as the network expanded. To verify a partial lump of the state at a given point, a knot need only download the data necessary for a branch of the tree and the hashes of its siblings. Any switch in the data stored at a leaf would require a malicious knot to be able to carry a preimage attack against the hashing algorithm of the tree (to find the values for the siblings that combined with the modified data produce the same root hash as the one stored in the block).

All of this permits efficient operations on the state of the blockchain, while at the same time keeping its actual (potentially big) data separate from the block, still the center lump of the security scheme of the blockchain.

History

Much like Bitcoin, the blockchain can be used to find the state of the system at any point in time. This can be done by replaying each transaction from the very very first block up to the point in question. However, in contrast to Bitcoin, most knots do not keep a utter copy of the data for every point in time. Ethereum permits for old data to be pruned from the blockchain. The blockchain remains consistent as long as the blocks are valid, and data is stored outside of the blocks, so technically it is not required to verify the proof-of-work chain. In contrast to Bitcoin, where to find the balance of an account a knot must replay all transactions leading up to that point, Ethereum stores state by keeping the root hash of the Merkle Patricia Tree in each block. As long as the data for the last block (or any past blocks) is available, future operations can be performed in the Ethereum network. In other words, it is not necessary for the network to replay old transactions, since their result is already available. This would be akin to storing the balance of each account in each block in the Bitcoin network.

There are, however, knots that store the entire copy of the historical state of the blockchain. This serves for historical and development purposes.

Solidity and a Sample Clever Contract

Brainy contracts run on the Ethereum Virtual Machine, which in turn runs on each knot. However powerful, the Ethereum Virtual Machine works at a level too low to be convenient to directly program (like most VMs). For this reason, several languages for writing contracts have been developed. Of these, the most popular one is Solidity.

Solidity is a JavaScript-like language developed specifically for writing Ethereum Clever Contracts. The Solidity compiler turns this code into Ethereum Virtual Machine bytecode, which can then be sent to the Ethereum network as a transaction to be given its own address.

To better understand Solidity, let's take a look at one example:

This is a elementary possessor claims contract. An proprietor claims contract is a contract that lets any address holder to record arbitrary key-value data. The nature of the blockchain certifies that the holder of certain address is the only one who can set claims in connection to that address. In other words, the proprietor claims contract permits anyone who wants to perform transactions with one of your addresses to know your claims. For example, you can set a claim called "email", so that anyone that wants to perform a transaction with you can get your email address. This is useful, since an Ethereum address is not strapped to an identity (or email address), only to its private-key.

The contract is as ordinary as possible. Very first there is the contract keyword that signals the beginning of a contract. Then comes OwnerClaims , the contract name. Inwards the contract there are two types of elements: variables and functions.

Among variables there are two types as well: constants and writable variables. Constants are just that: they can never be switched. Writable variables, however, save state in the blockchain. It is these variables that encode the state saved in the blockchain, nothing more.

Functions are lumps of code that can either read or modify state. Read-only functions are also marked as constant in the code and do not require gas to run. On the other palm, functions that mutate state require gas , since state transitions must be encoded in fresh blocks of the blockchain (and these cost work to produce).

Values returned from functions are returned to the caller.

The owners variable in our contract is a map, also known as associative array or dictionary. It matches a key to a value. In our case, the key is an address . Addresses in Ethereum are the identifiers of either normal accounts (usually managed by users) or other contracts. When an possessor of an address determines to set a claim, it is this mapping from address to a claim that we are interested in. In fact, we are not simply mapping an address to a claim, but to a group of key-values that constitute a group of claims (in the form of another map). This is convenient because an address proprietor might want to make several details about himself known to others. In other words, address owners might want to make their email address and their cellphone number available. To do so, they might create two claims: one under the "email" key, and the other under the "phone" key.

The contract leaves to each proprietor to determine what entries to create, so the names of the keys are not known in advance. For this reason, a special "default" key is available, so any reader might know at least one claim if he doesn't know what keys are available. In truth, this key is also in place for a different reason: Solidity does not make it practical to come back bulk data from functions. In other words, it is not effortless to come back all claims connected to an address in a single function call. In fact, the mapping type does not even have an iteration operation (albeit one can be coded if needed), so it is not possible to know what keys are inwards a mapping. It is left as an exercise for the reader to find ways to improve this if needed.

Current and Potential Uses

What we just eyed with our ordinary example gave us a taste of what is possible with Ethereum. Do note it has nothing to do with exchanging money! Albeit ether is necessary to perform mutations on the network, our contract is stringently worried with securely establishing a series of claims connected to an Ethereum address. Nothing more. Not only the result is mathematically verifiable (no other person other than the possessor of the address can set claims), but is also very hard to erase: it is recorded in a globally distributed database with no central knot!

Having access to a distributed, Turing-complete computing engine with verifiable semantics opens a world of possibilities. Let's take a look at interesting ideas already implemented or under implementation in Ethereum.

The Decentralized Autonomous Organization (DAO)

The DAO is, literally, an organization. It has members, it has a central authority (the possessor), members can cast votes and the organization itself can perform any operations any other account could do. Members can create proposals, in the form of transactions, and voting members from the organization can cast votes to either approve the proposal or dismiss it. Proposals have a limit of time after which votes are counted and a decision is taken. The decision to perform or dismiss the proposal is carried by the contract of the DAO. In other words, no central authority can determine the fate of a proposal, and this is certified by the contract and the nature of the blockchain. The proprietor can be switched by a proposal. The only privilege the possessor has is the capability to add or eliminate voting members.

In fact, the DAO we have just described is only one of the possible implementations. There are many improvements or modifications that can be performed to create whatever type of hierarchy. A Congress, a shareholder association, a democracy, these are all possibilities.

To learn more about DAOs, the main Ethereum website has a entire area dedicated to them.

A Central Bank or Your Own Coin

Albeit ether has real value and can be traded for other coins, other coin systems can be implemented on top of Ethereum. For example, you could design your own coin with a central authority that can create money, authorize transactions or arbitrate disputes. Take a look at a possible implementation by following this tutorial.

A Crowdfunding System

Crowdfunding lets donors send money for a project that has not been ended or even commenced. In this way, funding for projects of different sizes is possible. The amount of money donated for the project is what usually determines the fate of the project. The usual problem with crowdfunding is the need for a central figure to hold founders responsible in case a project is not satisfactorily finished after funding, or to make sure all the money donated actually arrives at the palms of the founders. In other words, crowdfunding requires a considerable amount of trust to be placed in both the founder of a project and the central authority. But with Ethereum this needn't be so.

With Ethereum, it is possible to design a contract that takes a certain amount of money from donors and stores it in an account. The funds in this account can be kept away from the forearms of the founders until they provide proof of their progress. When a certain milestone is achieved, the funds can be released. On the other forearm, if the founders fail to provide proof of their progress in a reasonable timeframe, donated funds can be automatically returned to the donors. All of this logic of treating funds can be performed without trust in a central authority. Donors can be sure their money won't be spent until proof-of-work is provided, and they can be sure they will always get their money back otherwise. They can also be 100% certain each donor's money will go into the right mitts.

Prove That You Said Something in the Past

An interesting aspect of the blockchain is that its mere existence is proof that every transaction in it happened at some point in time. Albeit a certain variance in the timestamp of a transaction is expected (as it will get set by the knot that creates the block that contains it), anything recorded in the blockchain happened at some point in the past. In fact, it is possible to assert it happened before or after other events also recorded or linked in some way to the blockchain. Since the blockchain permits for arbitrary state to be stored in it, it is possible to link an arbitrary message to an address. Anyone can confirm by looking at the blockchain that that message was produced at some point in the past by the proprietor of an address. All the holder needs to do is prove he is the possessor of the address that produced the same message in the past. This can simply be done by performing a transaction using the same address as before.

Suppose you wrote a book. Before sending copies to your friends and editors, you determine to prove it was you who wrote it by storing its proof of existence in the blockchain. If your book gets plagiarized before getting published (by one of the editors, for example), you can prove it was you who wrote it by demonstrating you linked its hash to an Ethereum address. When anyone wants to confirm you own the address, you can demonstrate it to them through any transaction of their choice. The blockchain ensures any person in doubt can see the association inbetween the hash of the book and your address, proving you had access to the utter copy of the book at some point in the past.

Proof of Existence for Digital Assets

The concept of the previous example can be extended to a proof of the existence of anything that can be hashed. In other words, anything with a single digital representation can be hashed and stored in the blockchain, just like the arbitrary message from above. Later, any user can query whether the element was hashed and added to the blockchain.

Here is one working example of this concept.

There are many more examples of things that can be implemented with Ethereum, check them out!

Aside: A Ordinary Login System using Ethereum

One of the cool things about Ethereum is that addresses are, by definition, systems to prove ownership. Whomever can perform operations with an Ethereum address is the rightful holder of that address. This is, of course, the consequence of the underlying public-key infrastructure used to verify transactions. We can exploit this to create a login system based on Ethereum addresses. Let's see how.

Any login system is mainly worried with creating a unique identity that can be managed by whomever can pass a certain "login challenge". The login challenge is the method to prove that the same entity that created the account in the very first place is the same entity doing operations now. Most systems rely on the classic username + password login challenge: a fresh user registers by choosing a unique username and a password, then, anytime the system requires proof that the user is in fact who he says he is, it can request the password for that username. This system works. But with Ethereum we already have a system for proving identities: public and private keys!

We'll design a plain contract that can be used by any user to validate his ownership of an address. The login process will be as goes after:

  1. A user accesses a website that requires him or her to login. When the user is not logged in, the website requests the user to come in his or her Ethereum address.
  2. The backend for the website receives the address for the user and creates a challenge string and a JWT. Both of these are sent back to the user.
  3. The user sends the challenge string to the Login contract and stores the JWT for later use locally.
  4. The backend listens for login attempts using the challenge string at the Ethereum network. When an attempt with the challenge string for the right user is seen, it can assume the user has proved his or her identity. The only person that can send a message with an Ethereum address is the holder of the private key, and the only user that knows the challenge string is the user that received the challenge through the login website.
  5. The user gets notified or polls the website backend for confirmation of his or her successful login. The user then proceeds to use the JWT issued in step two for accessing the website. Alternatively, a fresh JWT can be issued after a successful login.

To that end, this is the Ethereum contract we will use:

The contract is enormously plain. Events are special elements in Solidity that are mapped to a system in Ethereum that permits special data to be logged. Events are generally observed by clients monitoring the evolution of the blockchain. This permits deeds to be taken by clients when events are created. In our case, whenever a user attempts to login, an event created with the challenge is broadcast. We only care about receiving a call from the rightful proprietor of the Ethereum address that was passed to the third party website. And, thanks to the way Ethereum works, we can be sure the sender was the one who performed the call.

In addition to the sender's address, the challenge is also broadcast. This means anyone watching the blockchain now knows the challenge. However, this cannot be used on its own to impersonate a user: a user can only interact with the backend through the session JWT. This means an attacker must know three lumps of information to impersonate a user: the Ethereum address, the challenge AND the JWT issued with the challenge. Since JWTs are signed, an attacker cannot create a valid JWT to impersonate an user, even with access to the challenge.

What goes after is our backend code. Very first, let's see how to witness for Ethereum events:

The login_contract.js file contains what is needed to inter-operate with our contract. Let's take a look:

Web3 is the official client library to interact with Ethereum knots. An Ethereum knot is what actually connects to the rest of the Ethereum network. It performs "mining" (block generation), transaction operations (create and send) and block verification.

The Login.json file is generated by the Solidity contract compiler, part of the standard Ethereum development contraptions. The Solidity compiler takes Solidity source code and turns it into Ethereum Virtual Machine bytecode and an interface description file that can be used by Web3 to interact with the contract once it is uploaded to the network.

And here are our HTTP endpoints:

The /login endpoint receives a login request carrying an Ethereum address for the user that wants to login. The user must be the possessor of such Ethereum address. It generates a JWT and a challenge. The JWT can only be used to access the /finishLogin endpoint.

Before the user can call the /finishLogin endpoint he or she must prove his or her identity by making a call to the login method of the Login contract. The login method receives a single parameter: the challenge returned by the /login endpoint. He must perform this call using the same account address that was passed to the /login endpoint. He or she can use any Ethereum wallet or client to do this.

After making the call to the login method of the Login contract, the user can finish the login by using the /finishLogin endpoint. He or she must pass the JWT returned by the /login endpoint to it. If the login is successful, a fresh JWT with utter access is returned. Otherwise, if the login is still pending, an accepted HTTP status (202) is returned signalling decent verification of the login request is still pending. If the JWT passed to /finishLogin is invalid, an unauthorized HTTP status code is returned (401).

After the /finishLogin endpoint is called and the login process is finished, the returned JWT can be used to access other parts of the API. In this case, the /apiTest endpoint is available. It simply comebacks "It works!" packaged in a JSON object if the user is logged-in.

Running the Example

Building and deploying the example is not as straightforward as it may seem due to the nature of Ethereum and current development implements. Here are the steps we used to test the example above.

1. Get an Ethereum knot client

There are several Ethereum knot clients. A popular one is go-ethereum, a client written in Go. Download it and install it.

Ethereum, as other cryptocurrencies do, has different versions of the blockchain with different parameters. There are essentially two blockchains: the main official blockchain and a test blockchain. The main blockchain never undoes operations once they are confirmed. Since some operations require money, the main blockchain is not ideal for testing. The test blockchain, on the other mitt, is much less rigorous about forks and switches. It is also simpler to mine "Ether", Ethereum's currency.

We could use the test network for our example here. However, running a client knot for any of the public networks is problematic for one reason: to be able to begin doing transactions, the client must very first verify all previous transactions in the blockchain. That means that bootstrapping a fresh client knot takes fairly a bit of time. Fortunately there is an alternative: we can create a fresh, pristine private Ethereum blockchain to run our tests. To do so, run go-ethereum using the following directive line:

Two. Create a fresh Ethereum account to mine some Ether

The geth guideline can also be used to interact with a running client. Launch an interactive console connected to the running client:

The IPC file mentioned in the directive can be found in the output from running the knot in our very first step. Look for the line that reads:

Now in the Geth console type:

After hitting Inject a prompt will emerge requesting a passphrase. This is the passphrase that will be used to perform any operations using this account. You can think of this as the passphrase required to decrypt the private-key used to sign Ethereum transactions. Do not leave the prompt empty, choose a plain passphrase for testing instead. A fresh Ethereum address will be returned by the function. If at any point you leave behind this address, you can list accounts by investigating individual.listAccounts (it's a variable, not a function, so don't add () at the end).

The geth console is a JavaScript interpreter.

Three. Commence mining some Ether

Now it's time to add some Ether to our fresh account. Ether is required to perform operations in the Ethereum blockchain, so it is necessary to perform this step. Ether can be gathered in two ways: by receiving it from another account or by mining it. Since this is a private network, we will need to mine it. Don't worry, the private network is by default configured to be able to mine Ether lightly. Let's do it:

Now wait a few seconds (or minutes depending on your hardware) and then confirm you have some Ether in your account:

Four. Compile and deploy our Login contract

To simplify the process of compiling and deploying contracts, we will use truffle . Truffle is a development framework for Ethereum, simplifying many common tasks. Install it:

Before using truffle to deploy contracts, it is necessary to "unlock" our account in our Ethereum knot client. Unlocking is the process of decrypting the private-key and holding it in memory using the passphrase used to create it. This permits any client libraries (such as Truffle) connecting to the knot to make operations on behalf of the unlocked account. Go to the geth console and type:

Now switch to the solidity directory of our sample application. Edit the truffle.js file and set your freshly created address as the from key. Then run:

The migrate directive compiles and deploys the contracts to the Ethereum network on behalf of the account set in truffle.js . As a result you will get the address of the freshly deployed contract. Take note of it.

Five. Install an Ethereum wallet

Ethereum wallets are convenient interfaces for users to interact with the Ethereum network. Sending and receiving Ether, deploying contracts or making calls to them are all operations usually supported by wallets. Mist is the official Ethereum wallet. Download it and install it.

Once installed, we will need to tell Mist to connect to our private network rather than the public main or test networks. To do this, run Mist from the guideline line like so:

The IPC file is the same file used by the geth console and can be gathered from the geth output logs.

6. Tell the Ethereum wallet of the contract

Many contracts live in the Ethereum network. Wallets need to know a contract's address and interface before being able to interact with them. Let's tell Mist about our Login contract. Go to Contracts -> Witness Contract (top right, then bottom left).

Accomplish the fields as goes after:

  • Name: Login
  • Contract Address:
  • JSON Interface: the abi from Login.json . For convenience it is pasted below. Copy and paste it in Mist.

As a test, now attempt to send some Ether to the contract: Contracts -> Login -> Transfer Ether & Tokens . Send one Ether or any other amount less than your balance. You will need to provide the passphrase for your account.

7. Deploy the backend

Go to the backend folder and run:

8. Serve the frontend

Go to the frontend folder and run:

You may use any other elementary static HTTP server such as Python's SimpleHTTPServer . If you do so, make sure to serve the app in port 9080. This is significant due to CORS.

9. Test everything together!

Open your browser at http://localhost:9080. Now attempt to login by putting your Ethereum address in the input field. A challenge text will be generated. Go to the Mist (Ethereum Wallet) and go to the Login contract. To the right you will see "WRITE TO CONTRACT". Select the login function and paste the challenge in the text pack that shows up there. Then click on Execute . Input your passphrase and send the transaction.

Now switch back to the login page. After a few seconds the login will be finished and a welcome message will show up. Voilà!

This example shows how a typical Ethereum user can use his existing Ethereum account to login to any third party website supporting Ethereum. And all of this is done without a central server. Albeit authentication is not performed by the proprietor of the website, there is no central authority validating the user: it is the Ethereum network that does so.

Aside: Securing Applications with Auth0

Are you building a B2C, B2B, or B2E implement? Auth0, can help you concentrate on what matters the most to you, the special features of your product. Auth0 can improve your product's security with state-of-the-art features like passwordless, breached password surveillance, and multifactor authentication.

Conclusion

We have taken a deeper look at Ethereum: a decentralized, blockchain-based framework for developing applications. Applications run on each knot, and each state transition produced by them is validated and recorded by the blockchain. The power of the treatment extends the concepts of Bitcoin to more than just monetary transactions or elementary non-Turing finish contracts. The power of distributed apps is just beginning to be tapped. In the next post in the series we will take a look at an actual application developed on the Ethereum network: a two-factor authentication system for Ethereum users using a mobile validator application. Stay tuned!

Related video:

A Financial Revolution is coming – Populous Platform – Medium

A Financial Revolution is coming

I would like to commence off by telling, Populous is arguably one of the best projects to come out from the blockchain space. But that’s my opinion as I am Populous’s founder and CEO and I’m biased to say that. After reading this article I hope you will agree with me and clearly see the vision and the potential benefits the Populous Platform will bring to the future of finance and the blockchain.

So who am I and how do I fit into all this? Well, this is a good question and most likely a very significant one, to say the least. I am Stephen Williams, simply call me Steve, a relatively youthful man brought up and raised in an area called Lewisham which is in South East London, UK. My fascination with data commenced at an early age when I would often wonder how people built big businesses and became successful.

That lead me to purchase my very first copy of the FT, I had no idea what I was reading but I was drawn by the figures introduced on the front page of the financial times newspaper. There I began reading and studying every day on the financial health of businesses and how they operated and mostly importantly how company data played an significant role in the entire process of trade finance and credit decisions. It was not long after my self-studying I began to think of ways I could get in on the act and by this time I found I had the skill to analyse data and its sources.

I would often travel back and forward to the city business library to access company financial information as the library had subscriptions with large data vendors and it was free to use as a member. After many years of studying and acquiring the basic skill that I needed to begin my very first business, I was delivered a setback when I was not able to budge forward with my plan because I did not have enough practice and capital required at the time.

So I determined to dive deeper and deeper into researching more about financial data. It wasn’t long after then, that eXtensible Business Reporting Language ‘XBRL’ was substituting the way in which businesses had to file their yearly annual accounts to the Companies House.

I began to play close attention to ongoing developments as they unfolded and by that time I had begun programming and developing software I spotted an chance presenting itself to me. Now XBRL is sort of like XML and I knew how to extract data from XML, so when the Companies House announced that it would now be providing bulks and bulks of XBRL company accounting data out for free to the public, this was a no brainer and I instantly knew the significant role this data would pose at a later date. So I developed a instrument to extract UK company XBRL data from the format that it had been filed in.

Now since I had my very first knock back in getting into an industry which I craved to make my mark in, I determined to attempt alternative treatment by selling data to the main players in the invoice finance space. Eventually, I found a way to use the XBRL data I had extract into lists of thousands of companies who were asset rich but cash poor, I did this by using the Altman Z-score formula which I research and discovered the formula on the internet.

This same formula is presently used by rating agencies such as Moody’s to determine the likelihood of bankruptcy by a business. Armed with my targeted client list of companies who have cash flow problems I determined to go along and pitch my product to various banks and financial house who specialise in the invoice finance market. Albeit I found success in selling the data I released how backdated these banks and other financial institutions were in finding these types of clients.

For example, most firms hire 100s of sales personnel to go out and knock on doors of businesses in their area to see how that business is doing and whether they need extra cash flow. I would sometimes imagine how long and how many sales staff it would take to find one hundred potential clients when I could effortless do this at a click of a mouse. It was not long after having those thoughts coming more regularly that I determined to build my own invoice finance platform.

Bitcoin, Ethereum and Blockchain what are they? I somehow missed the very first Fintech wave because I was too involved in the data I had been analysing and selling to various banks and institutions. Late two thousand fifteen I had a call from a friend he was attempting to explain to me about bitcoin and how he made money by buying and selling it.

I instantly wrote him off as a day trader and I did not primarily find any interest in what he was telling as I had often day traded in the past and felt trading was not for me if I desired to keep the rest of my hair. It was not until a few weeks later when the same friend invited me out for drinks and determined to pay for the drinks the entire evening.

I asked why he insisted on paying for everything and he replied that he had made a decent profit from a big bitcoin trade, at that moment I looked into his eyes and spotted something different about him than I had seen before.

The next morning I was up on my laptop researching bitcoin and what the technology could do when I came across wise contracts, wow what is this I thought to myself. A computer contract but how, I read more and more and could not get my head around it or the code that is very much an offshoot of JavaScript. So I determine to go to a meet up in London, I attended one called Coinscrum which was my very first meet up and came away from the meet up the very first time feeling excited a little with fresh friends I made that evening who also seemed a lot more excited than I was.

I ultimately began to understand what the entire bitcoin thing was about and a fresh blockchain called Ethereum. I kept attempting to merge my understanding of SQL and NoSQL with the blockchain and realised that I had to let the past go in order to stir forward. A few months past, I eventually felt ready and knew exactly what I had to build this time round and on a scale not attempted yet. So I began to build a real-time financial marketplace using XBRL data on the blockchain, Populous.

So what is Populous? Well, the term Populous refers to the people of a community, state or country. I chose the name Populous after I fell in love with the cult game that bears the same name that was created by Peter Molyneux. Populous is in as much as the game, is a platform where we the people of the community come together as a entire to provide finance to businesses who need an injection of cash.

This is done by two funding practices known in the financial world as invoice and trade finance. Populous is unlike any other invoice finance marketplace, as the platform is built on top of the Ethereum blockchain and provides investors and sellers with a way of trading invoices in a hybrid auction/crowd funding model done by brainy contracts. I thought long and hard how this the platform would work if I had to use only bitcoin or ether and because of the volatile nature of both cryptocurrencies I determined to create our own ‘Pokens’. This now permits the platform participants to trade in a more stable environment and across all currencies and nations.

Today I will speak more on invoice finance and in my next post dive deeper into trade finance and why so much money as been poured into blockchain projects by banks and financial institutions that are attempting to come up with a blockchain solution these areas of finance.

I assume we all know what an invoice is? For those reading this article from countries that are not familiar with the term invoice, I will attempt and give a clear explanation of this type of business instrument. Well, other than an invoice it is known as a bill or tab. It is a commercial document stated by Wikipedia. It is given by a seller of goods or services to a buyer who purchases these goods or services from the seller. The invoice general asks for payment of the goods or services within a certain time framework. The length of time given to pay an invoice is agreed by both parties and can range from thirty days right up to ninety days and longer in some cases.

So what’s the issue here? Because entrepreneurs, puny and medium size businesses attempt very hard at the begin to make their businesses work, they sometimes hop or find themselves in these type of sales arrangements in order to finish sales of their products. The payment terms may not always be favourable to them but that’s business and they need to sell their goods or services to keep the business from going under. This sometimes causes what is known as a cash flow problem if the seller of the goods or services needs the money sooner to pay other things like wages, suppliers or other types of business expenses.

Did you know that the invoice finance industry is self-regulated? This means that anyone can lend money to businesses and you do not need a license to do that. I’ve often wondered in the past why this industry is predominated by banks and financial institutions and not by the people. The plain reaction is capital. But that is all about to switch with the arrival of Populous. I’m aiming to brake down the barriers to entry, providing everyone the chance to invest from as little as $100 and earn interest investors could only fantasy of. The other side of the coin is that we are going to use XBRL data to open the market up to businesses across the globe making it effortless for them to obtain the cash flow finance needed to grow their businesses successfully. A financial revolution is coming, don’t miss the chance to be a part of it. Invest in Populous ICO.

Related video:

A Blockchain Solution to High Prescription Drug Prices

Could There Be a Blockchain Solution to High Prescription Drug Prices?

Prescription drugs are one of the fattest contributors to soaring healthcare costs in the U.S. And for both individuals and families, particularly where numerous prescriptions are needed, drug expenses can quickly escalate to thousands of dollars.

According to a report from the Kaiser Family Foundation, eight in ten Americans would like the government to negotiate prices for those on Medicare. Additionally, Americans want thresholds set on the amount drug companies can charge for high-cost drugs, such as those to treat cancer.

Prescription costs for seniors seem to be garnering the most attention. Many on Medicare Part D practice what is known as the “doughnut crevice,” a term that’s used to describe a medication coverage gap. All Part D patients begin each year with a deductible amount, which, once hit, triggers coverage for medications. However, when that coverage amount is weakened, patients begin paying for their medications at the much higher retail rate — often five to ten times the covered costs.

The continued escalation of costs across all stratas of the U.S. population has been a key discussion point in efforts to revamp the Affordable Care Act, also known as Obamacare. The prevailing message: drugs don’t work if patients can’t afford them. Even President Trump has chimed in, telling that drug companies are “getting away with murder.” And in a speech to Congress that garnered bipartisan support, he said that his administration and Congress should “should work to bring down the artificially high price of drugs and bring them down instantly.”

Bringing Blockchain Technology Into the Conversation

Brennan Bennett, a pharmacy point-of-care experienced and editor of Blockchain Healthcare Review, says one of the fattest issues related to drug costs is the research and development expenses associated with every failed drug formulary. He notes that it can take almost a decade and several billion dollars to bring a fresh drug to market, and that’s if the clinical trials and paperwork fall within average timetables. Moreover, formulary patents for those that make it through last twenty years, meaning there are no cost-effective off-brands to counterbalance the premium brand.

Another major roadblock according to Bennett is the influence of pharma lobbyists on lawmakers, particularly with prescription issues that might involve some sort of legal stigmas. He cites for example a two thousand sixteen congressional act blocking the Veterans Administration from being able to prescribe medical cannabis for vets with injuries and PTSD, versus Oxycontin and Xanax, both of which are both very addictive and expensive.

But in his view the fattest issue in the entire prescription price debate is fraud. Says Bennett: “I heard at the latest Healthcare Blockchain Summit just this month that 1:100 drugs in America are counterfeit. I can’t say as to if that included over-the-counters, but, indeed, that would be irrelevant given the size and scope of this number.”

He believes blockchain technology could play a valuable role in addressing this issue by integrating with Internet of Things (IoT) devices to ensure a tamper-proof model across the supply chain. Says Bennett: “To achieve this entire chain of custody with a blockchain security–enabled system, a big pharma company would need to deploy a permissioned blockchain to treat their own internal chain of custody. At that point, they could share data with other permissioned blockchains run by the organizations that transport and distribute the drugs.”

Bennett believes that the largest barriers to blockchain adoption in this space are IP security concerns. “Nobody wants to adopt just yet because the data governance capability that would permit collaboration among blockchain-enabled pharma systems to share the data needed to drive down costs is still relatively immature. IP security is directly correlated with network security. So an entanglement of permissioned blockchains would need serious security.”

A Lack of Existing Major Players?

In terms of promising blockchain use cases, Bennett remarked that is he not aware of any that are “end-to-end,” meaning molecular modeling to retail shelf. “I will be participating in a panel discussion at the Johns Hopkins campus in June that will specifically be addressing what a major player would need to bring to the table in order to address the enterprise pharmacy space. If any do exist, I hope they’ll consider sharing their skill.”

He went on to note that there are slew of applications being developed for specific pharmacy business operations in terms of interaction with other points of patient care, but that pharmacy supply chain management is going to have to integrate with a multiplicity of blockchain applications to secure the entire process, the IoT being the fattest.

Amid talk about blockchain advancements in the pharmaceutical industry, Bennett had this to say:

“More and more of the patients in my pharmacy practice area are obtaining medications from Mexico and Canada. Patients are finding international pharmacies online. There are even organized bus trips across the border for drug purchases. I’ve even gotten reports from my patients of incredible savings on a brand-name product in the same packaging and same manufacturing plant. Why the costs to the American consumer are consistently at such an shockingly inflated rate compared with other countries is not well explained from any source I have found.”

Bennett is hopeful that pharmacy physical supply chain management use cases will evolve rapidly, learning from and mimicking other current supply chain management blockchain examples involving tangible items, such as food. He states that a number of blockchain use cases are popping up that address specific gasp points in pharmacy costs like clinical trials.

“Overall, the conversion of precision science, blockchain platforms, wise contracts on permissioned networks and A.I is where I think we are going to see the next macro evolution in modern science. And frankly I believe there is no better place for pharma to lead the way.”

Related video:

Ten Books About Blockchain and Bitcoin you Might Want to Read – Coinify Newsroom

ten Books About Blockchain and Bitcoin you Might Want to Read

If you are attempting to improve your skill of blockchain and bitcoin, a book could be one of the best information sources. However, there are many books out there and it might be difficult to choose the right one. Therefore, we compiled a list of the top ten books about blockchain and bitcoin you should consider reading.

Essential Books About Blockchain and Bitcoin

1. Mastering Bitcoin by Andreas Antonopoulos

‘ Mastering Bitcoin ’ is targeted to coders and programmers that would like to learn how cryptocurrencies work, how to use them and how to develop a software that works with them. However, the very first five chapters are suitable for non-coders as well, since they touch upon the world of digital money.

Two. Blockchain: Blueprint for a Fresh Economy by Melanie Swan

If you are interested in a thorough understanding of how blockchain works, this book may be a good choice for you. The concentrate is placed on deep explanations of the blockchain technology followed by bitcoin applications in real life.

Three. Blockchain Revolution by Don Tapscott and Alex Tapscott

Blockchain has a lot of potential but also a lot of obstacles to overcome. ‘ Blockchain Revolution ’ explains how the businesses, industries and society can achieve prosperity, competitiveness and social justice through blockchain. Basically, this books looks into how the internet based on blockchain technologies can switch civilisation for better.

Four. The Age of Cryptocurrency: How Bitcoin and the Blockchain Are Challenging the Global Economic Order by Paul Vigna and Michael J. Casey

This book was one of the very first major publications collective on the blockchain. ‘ The Age of Cryptocurrency ’ supplies the answers to why should anyone care about bitcoin. You can expect to learn about cryptocurrency: its origins, its functions, and what you need to know to be able to navigate a cyber economy.

Five. The Science of the Blockchain by Roger Wattenhofer

‘ The Science of Blockchain ’ studies the basic concepts and technologies for building fault-tolerant distributed systems, in a scientific way. Different protocols and algorithms that permit for fault-tolerant operations are introduced in the book. Furthermore, practical systems that implement the protocols and algorithms are discussed.

6. The Finish Guide to Understanding Blockchain Technology by Miles Price

The book dives into the numerous ways in which blockchain technology will switch the way information is collective around the world. Furthermore, it discusses how this technology will revamp financial services and how governments will adopt blockchain to issue the digital versions of their national currencies.

7. Blockchain & FinTech: A Comprehensive Blueprint to Understanding Blockchain & Financial Technology by Richard Hayen

The book offers insights on the potential and influence of blockchain technology on businesses, finance and the world. It also presents an essential guide to understanding the fresh economy.

Furthermore, it presents a debate about the influence of financial technology on banking and financial industry.

8. Down the Rabbit Crevice: (Detect the Power of the Blockchain) by Tim Lea

‘ Down the Rabbit Slot ’ is written for businesses and organisations to help them understand the power of the blockchain and capitalise on it. If you belong to business or organisation with an open mind, you will be able to spot the arousing opportunities to make your business more effective and become more valuable in the market place.

9. Good Chain of Numbers: A Guide to Wise Contracts, Wise Property and Trustless Asset Management by Tim Swanson

The Excellent Chain of Numbers is directed to a casual, business-centric audience that wants to become better informed and ready for the innovations generated by the next generation.

The readers will be able to find answers to the following questions: What is a clever contract? What are decentralised autonomous organisations? How can companies and organisations use cryptocurrencies and crypto-ledgers to reduce costs and increase transparency? What obstacles need to be taken into account when developing decentralised applications?

Ten. The Business Blockchain: Promise, Practice, and Application of the Next Internet Technology by William Mougayar

The blockchain technology will give rise to fresh business models and ideas that are still undiscovered. The book addresses the following: What is the blockchain? How blockchain trusts infiltrates. Obstacles, challenges & mental blocks. Blockchain in Financial Services. Lighthouse industries & fresh intermediaries. Implementing blockchain technology. Decentralisation as the way forward.

Now that you read through our recommendations on essential books about blockchain and bitcoin, do you know about book that you think shall be on this list? Let us know.

Photo Credits: StockSnap (Pixabay)

To learn more about blockchain applications across different industries, visit Coinify Newsroom .

Ten Books About Blockchain and Bitcoin you Might Want to Read – Coinify Newsroom

ten Books About Blockchain and Bitcoin you Might Want to Read

If you are attempting to improve your skill of blockchain and bitcoin, a book could be one of the best information sources. However, there are many books out there and it might be difficult to choose the right one. Therefore, we compiled a list of the top ten books about blockchain and bitcoin you should consider reading.

Essential Books About Blockchain and Bitcoin

1. Mastering Bitcoin by Andreas Antonopoulos

‘ Mastering Bitcoin ’ is targeted to coders and programmers that would like to learn how cryptocurrencies work, how to use them and how to develop a software that works with them. However, the very first five chapters are suitable for non-coders as well, since they touch upon the world of digital money.

Two. Blockchain: Blueprint for a Fresh Economy by Melanie Swan

If you are interested in a thorough understanding of how blockchain works, this book may be a good choice for you. The concentrate is placed on deep explanations of the blockchain technology followed by bitcoin applications in real life.

Trio. Blockchain Revolution by Don Tapscott and Alex Tapscott

Blockchain has a lot of potential but also a lot of obstacles to overcome. ‘ Blockchain Revolution ’ explains how the businesses, industries and society can achieve prosperity, competitiveness and social justice through blockchain. Basically, this books looks into how the internet based on blockchain technologies can switch civilisation for better.

Four. The Age of Cryptocurrency: How Bitcoin and the Blockchain Are Challenging the Global Economic Order by Paul Vigna and Michael J. Casey

This book was one of the very first major publications collective on the blockchain. ‘ The Age of Cryptocurrency ’ supplies the answers to why should anyone care about bitcoin. You can expect to learn about cryptocurrency: its origins, its functions, and what you need to know to be able to navigate a cyber economy.

Five. The Science of the Blockchain by Roger Wattenhofer

‘ The Science of Blockchain ’ examines the basic concepts and technologies for building fault-tolerant distributed systems, in a scientific way. Different protocols and algorithms that permit for fault-tolerant operations are introduced in the book. Furthermore, practical systems that implement the protocols and algorithms are discussed.

6. The Finish Guide to Understanding Blockchain Technology by Miles Price

The book dives into the numerous ways in which blockchain technology will switch the way information is collective around the world. Furthermore, it discusses how this technology will revamp financial services and how governments will adopt blockchain to issue the digital versions of their national currencies.

7. Blockchain & FinTech: A Comprehensive Blueprint to Understanding Blockchain & Financial Technology by Richard Hayen

The book offers insights on the potential and influence of blockchain technology on businesses, finance and the world. It also presents an essential guide to understanding the fresh economy.

Furthermore, it presents a debate about the influence of financial technology on banking and financial industry.

8. Down the Rabbit Crevice: (Detect the Power of the Blockchain) by Tim Lea

‘ Down the Rabbit Crevice ’ is written for businesses and organisations to help them understand the power of the blockchain and capitalise on it. If you belong to business or organisation with an open mind, you will be able to spot the titillating opportunities to make your business more effective and become more valuable in the market place.

9. Excellent Chain of Numbers: A Guide to Brainy Contracts, Brainy Property and Trustless Asset Management by Tim Swanson

The Excellent Chain of Numbers is directed to a casual, business-centric audience that wants to become better informed and ready for the innovations generated by the next generation.

The readers will be able to find answers to the following questions: What is a brainy contract? What are decentralised autonomous organisations? How can companies and organisations use cryptocurrencies and crypto-ledgers to reduce costs and increase transparency? What obstacles need to be taken into account when developing decentralised applications?

Ten. The Business Blockchain: Promise, Practice, and Application of the Next Internet Technology by William Mougayar

The blockchain technology will give rise to fresh business models and ideas that are still undiscovered. The book addresses the following: What is the blockchain? How blockchain trusts infiltrates. Obstacles, challenges & mental blocks. Blockchain in Financial Services. Lighthouse industries & fresh intermediaries. Implementing blockchain technology. Decentralisation as the way forward.

Now that you read through our recommendations on essential books about blockchain and bitcoin, do you know about book that you think shall be on this list? Let us know.

Picture Credits: StockSnap (Pixabay)

To learn more about blockchain applications across different industries, visit Coinify Newsroom .

Related video:

1 5 6 7