ethereum reading list

Basics There are two types of fundamental items one can encode in RLP: Strings of bytes Lists of other items In this package, byte strings are represented either as Python strings or as .Lists can be any sequence, e.g.To encode these kinds of objects, use : () () () , [, (, (, , Decoding is just as simple: (') ('') ('') ('a') Now, what if we want to encode a different object, say, an integer?Let’s try: () ('') Oops, what happened?Encoding worked fine, but refused to give an integer back.The reason is that RLP is typeless.It doesn’t know if the encoded data represents a number, a string, or a more complicated object.It only distinguishes between byte strings and lists.Therefore, pyrlp guesses how to serialize the object into a byte string (here, in big endian notation).When encoded however, the type information is lost and returned the result in its most generic form, as a string.
Thus, what we need to do is deserialize the result afterwards.Sedes objects Serialization and its couterpart, deserialization, is done by, what we call, sedes objects (borrowing from the word “codec”).easy bitcoin profits pdfFor integers, the sedes is in charge.bitcoin mining using amazon cloudTo decode our integer, we can pass this sedes to : ('', ) For unicode strings, there’s the sedes , which uses UTF-8 to convert to and from byte strings: () (', ) (', ) Lists are a bit more difficult as they can contain arbitrarily complex combinations of types.bitcoin report goldman sachsTherefore, we need to create a sedes object specific for each list type.valor bitcoin 2008
As base class for this we can use : 5, , 0 = , , ('', ) Unsurprisingly, it is also possible to nest objects: = , = , , (, ) (, [, [, ) What Sedes Objects Actually Are We saw how to use sedes objects, but what exactly are they?greek bitcoin poolThey are characterized by providing the following three member functions: The latter two are used to convert between a Python object and its representation as byte strings or sequences.ethereal blade heroesThe former one may be called by to infer which sedes object to use for a given object (see Sedes Inference).why bitcoin price surgeFor basic types, the sedes object is usually a module (e.g.bitcoin cbs news
Instances of provide the sedes interface too, as well as the class which is discussed in the following section.moscow news bitcoinEncoding Custom Objects Often, we want to encode our own objects in RLP.Examples from the Ethereum world are transactions, blocks or anything send over the Wire.With pyrlp, this is as easy as subclassing : (.)= ( (, (, (, ) ) The class attribute is a sequence of 2-tuples defining the field names and the corresponding sedes.For each name an instance attribute is created, that can conveniently be initialized with : = (, , ) = (=, =, =) .At serialization, the field names are dropped and the object is converted to a list, where the provided sedes objects are used to serialize the object attributes: .()., , '' .()As we can see, each subclass of implements the sedes responsible for its instances.
Therefore, we can use and as expected: () ('', ) Sedes Inference As we have seen, (or, rather, ) tries to guess a sedes capable of serializing the object before encoding.In this process, it follows the following steps: Check if the object’s class is a sedes object (like every subclass of ).If so, its class is the sedes.Check if one of the entries in can serialize the object (via ).If so, this is the sedes.Check if the object is a sequence.If so, build a by recursively infering a sedes for each of its elements.If none of these steps was successful, sedes inference has failed.If you have build your own basic sedes (e.g.for or ), you might want to hook in at step 2 and add it to , whereby it will be automatically be used by .Further Reading This was basically everything there is to about this package.The technical specification of RLP can be found either in the Ethereum wiki or in Appendix B of Gavin Woods Yellow Paper.
For more detailed information about this package, have a look at the API Reference or the source code.Read more The future of money What happens when the way we buy, sell and pay for things changes, perhaps even removing the need for banks or currency exchange bureaus?That's the radical promise of a world powered by cryptocurrencies like Bitcoin and Ethereum.We're not there yet, but in this sparky talk, digital currency researcher Neha Narula describes the collective fiction of money — and paints a picture of a very different looking future.Neha Narula is helping redefine the future of money by researching cryptocurrencies and providing clarity on how digital currencies will transform our world.We have sat here for the last 3 years seeing only infrastructure apps like wallets and exchanges emerge on top of Bitcoin.Why is that?My theory has been that the scripting language in Bitcoin — the piece of every Bitcoin transaction that lets you run a little software program along with it — is too restrictive.Enter Ethereum.
Ethereum has taken what was a four function calculator of a programming language in Bitcoin and turned it into a full fledged computer.We now stand only 9 months out from the beginning of the Ethereum network and the level of app development is already faster than Bitcoin’s.We are finally getting rapid iteration at the app layer.In one early example, people have designed a decentralized organization (The DAO) — a company whose heart is code and peripheral operations are run by humans, rather than the other way around — that has raised $150m so far in the largest crowdfunding ever.To be clear, I don’t think this needs to be a contest between Bitcoin vs.Ethereum and Coinbase plans to strongly support both.I think this is about advancing digital currency as much as we can.There is a significant amount of overlap between the two, however, so the comparison is valuable and the potential for competition is real.First, some history.When the Bitcoin white paper emerged in 2008 it was completely revolutionary.
The amount of concepts that had to come together in just the right way — computer science, cryptography, and economic incentives — was astonishing.When the actual Bitcoin network launched in 2009, no one knew about it, and many of those who did thought it would surely fail.Just to make sure the thing worked, the scripting language in Bitcoin was intentionally extremely restrictive.“Scripting language” is a fancy way of saying an easy to work with programming language (in fact, Bitcoin doesn’t exactly have a scripting language, it uses a stack with script operators — more on that later).The scripting language in Bitcoin is important because it is what makes Bitcoin “programmable money”.Within each Bitcoin transaction is the ability to write a little program.For example, you can write a little program in a Bitcoin transaction that says “this transaction isn’t valid unless it’s June 15th, 2016 or later”.This is very powerful because you can move money automatically with computer code and everyone can see the rules by which that money moves and know those rules will be followed.It was, and still is, incredible that Bitcoin got off the ground and is alive after 7 years.
It is the first network ever to allow anyone in the world to access a fundamentally open financial system through free software.It has ~$7bn in market cap and has never had a systemic issue which could not be fixed.To some this is already a great success.However, we also stand here 7 years into Bitcoin with few apps and no “killer apps” beyond store of value and speculation.The scripting language in Bitcoin has barely expanded and remains very restrictive.While Bitcoin has become embroiled in debate over the block size — an important topic for the health of the network, but not something that should halt progress in a young and rapidly developing field — Ethereum is charting new territory, both intellectually and executionally.Make no mistake — Ethereum would never have existed without Bitcoin as a forerunner.That said, I think Ethereum is ahead of Bitcoin in many ways and represents the bleeding edge of digital currency.I believe this for a few reasons:As mentioned above, Bitcoin’s scripting language is intentionally restrictive.
You might liken it to programming with an advanced graphing calculator — functionality is limited.As a result, you can only do basic things.It is also hard to understand and use.Rather than most modern programming languages where the code is almost readable like a sentence, it looks like unintelligible machine code.As a result, it took Mike Hearn, a talented ex-Google developer, a whopping 8 months to write a first version of a fairly simple crowdfunding application.In contrast, Ethereum’s programming languages (Solidity for those who like Javascript, Serpent for those who like Python) let you do pretty much anything an advanced programming language would let you do.This is why they are said to be “Turing complete”.Equally important, they are easy to use.It is simple for any developer to pick it up and quickly write their first app.Here’s an example of a script in Bitcoin:And one in Ethereum’s Solidity:Developers at Coinbase have written simple Ethereum apps in a day or two.I cannot overemphasize enough how important this combination of full programming functionality and ease of use is.
People are doing things in Ethereum that are not possible right now in Bitcoin.It has created a new generation of developers which never worked with Bitcoin but are interested in Ethereum.Bitcoin could have this advanced functionality, but it would be through a series of other layers that work with the Bitcoin protocol that haven’t been created yet, while Ethereum is providing it out of the box.Beyond the radical difference in scripting languages, developer tools are much better in Ethereum.Bitcoin has never had a set of developer tools that caught on much, and they are sorely needed given it is much harder to work with Bitcoin out of the box.Ethereum has made life as a developer much easier.It has a welcoming homepage for devs and its own development environment (Mix IDE) amongst others.The developer community in Bitcoin feels fairly dormant.Bitcoin never really made it past the stage of simple wallets and exchanges.The most notable thing to be released recently is an implementation of the Lightning Network (a way of making transactions, especially microtransactions, more efficient) called Thunder.
This is an additional protocol layer, not an application, however, and could be used by both Bitcoin and Ethereum.In contrast, Ethereum’s developer community feels vibrant and growing.Most importantly, entirely new things are being tried on Ethereum.While most are experiments or toys at the moment, you can see a list of apps that developers from around the world which is rapidly expanding.Developer mindshare is the most important thing to have in digital currency.The only reason these networks (Bitcoin, Ethereum) and their tokens (bitcoin, ether) have value is because there is a future expectation that people will want to acquire those tokens to use the network.And developers create the applications which drive that demand.Without a reason to use the network, both the network and its currency are worth nothing.Vitalik Buterin, the creator of Ethereum, has shown early promise as the leader of an open source project.He seems both comfortable as a community and technical leader.As an example, here’s what he sent us when we added Ethereum to GDAX, our exchange.In contrast, Bitcoin has had a leadership vacuum since Gavin Andresen stepped aside after other core developers did not get on board with his (in my opinion rational and convincing) arguments to increase the block size.
“Core developers” as they now stand are also relatively fragmented.Beyond a leadership vacuum, Bitcoin’s “leadership” is less clear and toxic.Greg Maxwell, technical leader of Blockstream which employs a solid chunk of core developers, recently referred to other core developers who were working with miners on a block size compromise as “well meaning dips***s.” A second discussion board needed to form on reddit, /r/btc, because of censorship on the original /r/bitcoin.The content on the Bitcoin discussion boards feels like squabbling while Ethereum’s is talking about relevant issues and new ideas.In summary, Ethereum leadership (and as a result its community) is moving forward while things need to get worse before they can get better in Bitcoin.The general mindset of the two communities feels different as well.Many in Bitcoin seem to have a false sense of “we’ve got this really valuable network we need to protect!”.In my opinion that view is wrong and dangerous.Bitcoin is still orders of magnitude smaller than the major financial networks of the world at ~$200m/day in transaction volume (Visa $18 billion/day, SWIFT wire $5 trillion/day) and ~10 million users (5 billion in banks).
And while transactions per day on Bitcoin seem to be increasing at a healthy pace, the actual $ volume of transactions on Bitcoin is not growing much.Meanwhile, the core development team in Ethereum is focused.This is evident from the Ethereum blog.When I started reading it, it was everything I found myself thinking about for the present and future of Bitcoin but didn’t see being discussed much: scaling the network, the viability of proof of stake, how to create a stable digital currency, what a blockchain based company (DAO) would look like, amongst other topics.These are very ambitious ideas and some won’t work.But some probably will work, and they will be important — moving to proof of stake and eliminating physical mining being one of the most promising.In Bitcoin, we have mostly been stuck on the block size debate for the last year and a half.Some minor improvements have been made (CHECKLOCKTIMEVERIFY to enable the time locking functionality mentioned earlier), and others are in development but not yet live (Segregated Witness to make the network more efficient).
None of these changes have sparked much in the way of application development yet.Meanwhile, beyond the more robust programming language, Ethereum is making advancements that are core to even basic transactions.Its mining allows for much quicker blocks, and thus, transaction confirmation times — about 14 seconds on Ethereum compared to 10 minutes on Bitcoin (not an apples to apples comparison, but the larger point holds).This is largely due to the concept of miners getting paid for the work they put in whether or not they are the first to solve the next block (a system called “uncle blocks”).While this system isn’t perfect yet, it’s meaningful forward progress towards quicker transaction confirmations.Ethereum is young and it’s prudent to highlight the risks:This remains to be seen.It’s possible Bitcoin remains the protocol that people are comfortable storing their value in because it is more stable and reliable.This would allow Ethereum to continue to take more risk by trying less tested advancements.
In this scenario, Bitcoin is more of a settlement network while Ethereum is used to run decentralized applications (where most of the transaction volume occurs is up in the air).The two could be quite complementary.What is very real, though, is the possibility that Ethereum blows past Bitcoin entirely.There is nothing that Bitcoin can do which Ethereum can’t.While Ethereum is less battle tested, it is moving faster, has better leadership, and has more developer mindshare.First mover advantage is challenging to overcome, but at current pace, it’s conceivable.It’s all good news for digital currency.Ethereum is pushing the envelope and I am more excited than ever.Competition and new ideas create better outcomes for everyone.Even if Ethereum goes up in flames our collective knowledge in digital currency will have leveled up significantly.I have not given up on Bitcoin and it’s hard to argue with a network that has been so resilient.I, and Coinbase, plan on supporting both.We’ll probably support other things that haven’t been invented yet in the future.