Blockchain Explorer - Search the Blockchain BTC ETH BCH

Why i’m bullish on Zilliqa (long read)

Edit: TL;DR added in the comments
 
Hey all, I've been researching coins since 2017 and have gone through 100s of them in the last 3 years. I got introduced to blockchain via Bitcoin of course, analyzed Ethereum thereafter and from that moment I have a keen interest in smart contact platforms. I’m passionate about Ethereum but I find Zilliqa to have a better risk-reward ratio. Especially because Zilliqa has found an elegant balance between being secure, decentralized and scalable in my opinion.
 
Below I post my analysis of why from all the coins I went through I’m most bullish on Zilliqa (yes I went through Tezos, EOS, NEO, VeChain, Harmony, Algorand, Cardano etc.). Note that this is not investment advice and although it's a thorough analysis there is obviously some bias involved. Looking forward to what you all think!
 
Fun fact: the name Zilliqa is a play on ‘silica’ silicon dioxide which means “Silicon for the high-throughput consensus computer.”
 
This post is divided into (i) Technology, (ii) Business & Partnerships, and (iii) Marketing & Community. I’ve tried to make the technology part readable for a broad audience. If you’ve ever tried understanding the inner workings of Bitcoin and Ethereum you should be able to grasp most parts. Otherwise, just skim through and once you are zoning out head to the next part.
 
Technology and some more:
 
Introduction
 
The technology is one of the main reasons why I’m so bullish on Zilliqa. First thing you see on their website is: “Zilliqa is a high-performance, high-security blockchain platform for enterprises and next-generation applications.” These are some bold statements.
 
Before we deep dive into the technology let’s take a step back in time first as they have quite the history. The initial research paper from which Zilliqa originated dates back to August 2016: Elastico: A Secure Sharding Protocol For Open Blockchains where Loi Luu (Kyber Network) is one of the co-authors. Other ideas that led to the development of what Zilliqa has become today are: Bitcoin-NG, collective signing CoSi, ByzCoin and Omniledger.
 
The technical white paper was made public in August 2017 and since then they have achieved everything stated in the white paper and also created their own open source intermediate level smart contract language called Scilla (functional programming language similar to OCaml) too.
 
Mainnet is live since the end of January 2019 with daily transaction rates growing continuously. About a week ago mainnet reached 5 million transactions, 500.000+ addresses in total along with 2400 nodes keeping the network decentralized and secure. Circulating supply is nearing 11 billion and currently only mining rewards are left. The maximum supply is 21 billion with annual inflation being 7.13% currently and will only decrease with time.
 
Zilliqa realized early on that the usage of public cryptocurrencies and smart contracts were increasing but decentralized, secure, and scalable alternatives were lacking in the crypto space. They proposed to apply sharding onto a public smart contract blockchain where the transaction rate increases almost linear with the increase in the amount of nodes. More nodes = higher transaction throughput and increased decentralization. Sharding comes in many forms and Zilliqa uses network-, transaction- and computational sharding. Network sharding opens up the possibility of using transaction- and computational sharding on top. Zilliqa does not use state sharding for now. We’ll come back to this later.
 
Before we continue dissecting how Zilliqa achieves such from a technological standpoint it’s good to keep in mind that a blockchain being decentralised and secure and scalable is still one of the main hurdles in allowing widespread usage of decentralised networks. In my opinion this needs to be solved first before blockchains can get to the point where they can create and add large scale value. So I invite you to read the next section to grasp the underlying fundamentals. Because after all these premises need to be true otherwise there isn’t a fundamental case to be bullish on Zilliqa, right?
 
Down the rabbit hole
 
How have they achieved this? Let’s define the basics first: key players on Zilliqa are the users and the miners. A user is anybody who uses the blockchain to transfer funds or run smart contracts. Miners are the (shard) nodes in the network who run the consensus protocol and get rewarded for their service in Zillings (ZIL). The mining network is divided into several smaller networks called shards, which is also referred to as ‘network sharding’. Miners subsequently are randomly assigned to a shard by another set of miners called DS (Directory Service) nodes. The regular shards process transactions and the outputs of these shards are eventually combined by the DS shard as they reach consensus on the final state. More on how these DS shards reach consensus (via pBFT) will be explained later on.
 
The Zilliqa network produces two types of blocks: DS blocks and Tx blocks. One DS Block consists of 100 Tx Blocks. And as previously mentioned there are two types of nodes concerned with reaching consensus: shard nodes and DS nodes. Becoming a shard node or DS node is being defined by the result of a PoW cycle (Ethash) at the beginning of the DS Block. All candidate mining nodes compete with each other and run the PoW (Proof-of-Work) cycle for 60 seconds and the submissions achieving the highest difficulty will be allowed on the network. And to put it in perspective: the average difficulty for one DS node is ~ 2 Th/s equaling 2.000.000 Mh/s or 55 thousand+ GeForce GTX 1070 / 8 GB GPUs at 35.4 Mh/s. Each DS Block 10 new DS nodes are allowed. And a shard node needs to provide around 8.53 GH/s currently (around 240 GTX 1070s). Dual mining ETH/ETC and ZIL is possible and can be done via mining software such as Phoenix and Claymore. There are pools and if you have large amounts of hashing power (Ethash) available you could mine solo.
 
The PoW cycle of 60 seconds is a peak performance and acts as an entry ticket to the network. The entry ticket is called a sybil resistance mechanism and makes it incredibly hard for adversaries to spawn lots of identities and manipulate the network with these identities. And after every 100 Tx Blocks which corresponds to roughly 1,5 hour this PoW process repeats. In between these 1,5 hour, no PoW needs to be done meaning Zilliqa’s energy consumption to keep the network secure is low. For more detailed information on how mining works click here.
Okay, hats off to you. You have made it this far. Before we go any deeper down the rabbit hole we first must understand why Zilliqa goes through all of the above technicalities and understand a bit more what a blockchain on a more fundamental level is. Because the core of Zilliqa’s consensus protocol relies on the usage of pBFT (practical Byzantine Fault Tolerance) we need to know more about state machines and their function. Navigate to Viewblock, a Zilliqa block explorer, and just come back to this article. We will use this site to navigate through a few concepts.
 
We have established that Zilliqa is a public and distributed blockchain. Meaning that everyone with an internet connection can send ZILs, trigger smart contracts, etc. and there is no central authority who fully controls the network. Zilliqa and other public and distributed blockchains (like Bitcoin and Ethereum) can also be defined as state machines.
 
Taking the liberty of paraphrasing examples and definitions given by Samuel Brooks’ medium article, he describes the definition of a blockchain (like Zilliqa) as: “A peer-to-peer, append-only datastore that uses consensus to synchronize cryptographically-secure data”.
 
Next, he states that: "blockchains are fundamentally systems for managing valid state transitions”. For some more context, I recommend reading the whole medium article to get a better grasp of the definitions and understanding of state machines. Nevertheless, let’s try to simplify and compile it into a single paragraph. Take traffic lights as an example: all its states (red, amber, and green) are predefined, all possible outcomes are known and it doesn’t matter if you encounter the traffic light today or tomorrow. It will still behave the same. Managing the states of a traffic light can be done by triggering a sensor on the road or pushing a button resulting in one traffic lights’ state going from green to red (via amber) and another light from red to green.
 
With public blockchains like Zilliqa, this isn’t so straightforward and simple. It started with block #1 almost 1,5 years ago and every 45 seconds or so a new block linked to the previous block is being added. Resulting in a chain of blocks with transactions in it that everyone can verify from block #1 to the current #647.000+ block. The state is ever changing and the states it can find itself in are infinite. And while the traffic light might work together in tandem with various other traffic lights, it’s rather insignificant comparing it to a public blockchain. Because Zilliqa consists of 2400 nodes who need to work together to achieve consensus on what the latest valid state is while some of these nodes may have latency or broadcast issues, drop offline or are deliberately trying to attack the network, etc.
 
Now go back to the Viewblock page take a look at the amount of transaction, addresses, block and DS height and then hit refresh. Obviously as expected you see new incremented values on one or all parameters. And how did the Zilliqa blockchain manage to transition from a previous valid state to the latest valid state? By using pBFT to reach consensus on the latest valid state.
 
After having obtained the entry ticket, miners execute pBFT to reach consensus on the ever-changing state of the blockchain. pBFT requires a series of network communication between nodes, and as such there is no GPU involved (but CPU). Resulting in the total energy consumed to keep the blockchain secure, decentralized and scalable being low.
 
pBFT stands for practical Byzantine Fault Tolerance and is an optimization on the Byzantine Fault Tolerant algorithm. To quote Blockonomi: “In the context of distributed systems, Byzantine Fault Tolerance is the ability of a distributed computer network to function as desired and correctly reach a sufficient consensus despite malicious components (nodes) of the system failing or propagating incorrect information to other peers.” Zilliqa is such a distributed computer network and depends on the honesty of the nodes (shard and DS) to reach consensus and to continuously update the state with the latest block. If pBFT is a new term for you I can highly recommend the Blockonomi article.
 
The idea of pBFT was introduced in 1999 - one of the authors even won a Turing award for it - and it is well researched and applied in various blockchains and distributed systems nowadays. If you want more advanced information than the Blockonomi link provides click here. And if you’re in between Blockonomi and the University of Singapore read the Zilliqa Design Story Part 2 dating from October 2017.
Quoting from the Zilliqa tech whitepaper: “pBFT relies upon a correct leader (which is randomly selected) to begin each phase and proceed when the sufficient majority exists. In case the leader is byzantine it can stall the entire consensus protocol. To address this challenge, pBFT offers a view change protocol to replace the byzantine leader with another one.”
 
pBFT can tolerate ⅓ of the nodes being dishonest (offline counts as Byzantine = dishonest) and the consensus protocol will function without stalling or hiccups. Once there are more than ⅓ of dishonest nodes but no more than ⅔ the network will be stalled and a view change will be triggered to elect a new DS leader. Only when more than ⅔ of the nodes are dishonest (66%) double-spend attacks become possible.
 
If the network stalls no transactions can be processed and one has to wait until a new honest leader has been elected. When the mainnet was just launched and in its early phases, view changes happened regularly. As of today the last stalling of the network - and view change being triggered - was at the end of October 2019.
 
Another benefit of using pBFT for consensus besides low energy is the immediate finality it provides. Once your transaction is included in a block and the block is added to the chain it’s done. Lastly, take a look at this article where three types of finality are being defined: probabilistic, absolute and economic finality. Zilliqa falls under the absolute finality (just like Tendermint for example). Although lengthy already we skipped through some of the inner workings from Zilliqa’s consensus: read the Zilliqa Design Story Part 3 and you will be close to having a complete picture on it. Enough about PoW, sybil resistance mechanism, pBFT, etc. Another thing we haven’t looked at yet is the amount of decentralization.
 
Decentralisation
 
Currently, there are four shards, each one of them consisting of 600 nodes. 1 shard with 600 so-called DS nodes (Directory Service - they need to achieve a higher difficulty than shard nodes) and 1800 shard nodes of which 250 are shard guards (centralized nodes controlled by the team). The amount of shard guards has been steadily declining from 1200 in January 2019 to 250 as of May 2020. On the Viewblock statistics, you can see that many of the nodes are being located in the US but those are only the (CPU parts of the) shard nodes who perform pBFT. There is no data from where the PoW sources are coming. And when the Zilliqa blockchain starts reaching its transaction capacity limit, a network upgrade needs to be executed to lift the current cap of maximum 2400 nodes to allow more nodes and formation of more shards which will allow to network to keep on scaling according to demand.
Besides shard nodes there are also seed nodes. The main role of seed nodes is to serve as direct access points (for end-users and clients) to the core Zilliqa network that validates transactions. Seed nodes consolidate transaction requests and forward these to the lookup nodes (another type of nodes) for distribution to the shards in the network. Seed nodes also maintain the entire transaction history and the global state of the blockchain which is needed to provide services such as block explorers. Seed nodes in the Zilliqa network are comparable to Infura on Ethereum.
 
The seed nodes were first only operated by Zilliqa themselves, exchanges and Viewblock. Operators of seed nodes like exchanges had no incentive to open them for the greater public. They were centralised at first. Decentralisation at the seed nodes level has been steadily rolled out since March 2020 ( Zilliqa Improvement Proposal 3 ). Currently the amount of seed nodes is being increased, they are public-facing and at the same time PoS is applied to incentivize seed node operators and make it possible for ZIL holders to stake and earn passive yields. Important distinction: seed nodes are not involved with consensus! That is still PoW as entry ticket and pBFT for the actual consensus.
 
5% of the block rewards are being assigned to seed nodes (from the beginning in 2019) and those are being used to pay out ZIL stakers. The 5% block rewards with an annual yield of 10.03% translate to roughly 610 MM ZILs in total that can be staked. Exchanges use the custodial variant of staking and wallets like Moonlet will use the non-custodial version (starting in Q3 2020). Staking is being done by sending ZILs to a smart contract created by Zilliqa and audited by Quantstamp.
 
With a high amount of DS; shard nodes and seed nodes becoming more decentralized too, Zilliqa qualifies for the label of decentralized in my opinion.
 
Smart contracts
 
Let me start by saying I’m not a developer and my programming skills are quite limited. So I‘m taking the ELI5 route (maybe 12) but if you are familiar with Javascript, Solidity or specifically OCaml please head straight to Scilla - read the docs to get a good initial grasp of how Zilliqa’s smart contract language Scilla works and if you ask yourself “why another programming language?” check this article. And if you want to play around with some sample contracts in an IDE click here. The faucet can be found here. And more information on architecture, dapp development and API can be found on the Developer Portal.
If you are more into listening and watching: check this recent webinar explaining Zilliqa and Scilla. Link is time-stamped so you’ll start right away with a platform introduction, roadmap 2020 and afterwards a proper Scilla introduction.
 
Generalized: programming languages can be divided into being ‘object-oriented’ or ‘functional’. Here is an ELI5 given by software development academy: * “all programs have two basic components, data – what the program knows – and behavior – what the program can do with that data. So object-oriented programming states that combining data and related behaviors in one place, is called “object”, which makes it easier to understand how a particular program works. On the other hand, functional programming argues that data and behavior are different things and should be separated to ensure their clarity.” *
 
Scilla is on the functional side and shares similarities with OCaml: OCaml is a general-purpose programming language with an emphasis on expressiveness and safety. It has an advanced type system that helps catch your mistakes without getting in your way. It's used in environments where a single mistake can cost millions and speed matters, is supported by an active community, and has a rich set of libraries and development tools. For all its power, OCaml is also pretty simple, which is one reason it's often used as a teaching language.
 
Scilla is blockchain agnostic, can be implemented onto other blockchains as well, is recognized by academics and won a so-called Distinguished Artifact Award award at the end of last year.
 
One of the reasons why the Zilliqa team decided to create their own programming language focused on preventing smart contract vulnerabilities is that adding logic on a blockchain, programming, means that you cannot afford to make mistakes. Otherwise, it could cost you. It’s all great and fun blockchains being immutable but updating your code because you found a bug isn’t the same as with a regular web application for example. And with smart contracts, it inherently involves cryptocurrencies in some form thus value.
 
Another difference with programming languages on a blockchain is gas. Every transaction you do on a smart contract platform like Zilliqa or Ethereum costs gas. With gas you basically pay for computational costs. Sending a ZIL from address A to address B costs 0.001 ZIL currently. Smart contracts are more complex, often involve various functions and require more gas (if gas is a new concept click here ).
 
So with Scilla, similar to Solidity, you need to make sure that “every function in your smart contract will run as expected without hitting gas limits. An improper resource analysis may lead to situations where funds may get stuck simply because a part of the smart contract code cannot be executed due to gas limits. Such constraints are not present in traditional software systems”. Scilla design story part 1
 
Some examples of smart contract issues you’d want to avoid are: leaking funds, ‘unexpected changes to critical state variables’ (example: someone other than you setting his or her address as the owner of the smart contract after creation) or simply killing a contract.
 
Scilla also allows for formal verification. Wikipedia to the rescue: In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics.
 
Formal verification can be helpful in proving the correctness of systems such as: cryptographic protocols, combinational circuits, digital circuits with internal memory, and software expressed as source code.
 
Scilla is being developed hand-in-hand with formalization of its semantics and its embedding into the Coq proof assistant — a state-of-the art tool for mechanized proofs about properties of programs.”
 
Simply put, with Scilla and accompanying tooling developers can be mathematically sure and proof that the smart contract they’ve written does what he or she intends it to do.
 
Smart contract on a sharded environment and state sharding
 
There is one more topic I’d like to touch on: smart contract execution in a sharded environment (and what is the effect of state sharding). This is a complex topic. I’m not able to explain it any easier than what is posted here. But I will try to compress the post into something easy to digest.
 
Earlier on we have established that Zilliqa can process transactions in parallel due to network sharding. This is where the linear scalability comes from. We can define simple transactions: a transaction from address A to B (Category 1), a transaction where a user interacts with one smart contract (Category 2) and the most complex ones where triggering a transaction results in multiple smart contracts being involved (Category 3). The shards are able to process transactions on their own without interference of the other shards. With Category 1 transactions that is doable, with Category 2 transactions sometimes if that address is in the same shard as the smart contract but with Category 3 you definitely need communication between the shards. Solving that requires to make a set of communication rules the protocol needs to follow in order to process all transactions in a generalised fashion.
 
And this is where the downsides of state sharding comes in currently. All shards in Zilliqa have access to the complete state. Yes the state size (0.1 GB at the moment) grows and all of the nodes need to store it but it also means that they don’t need to shop around for information available on other shards. Requiring more communication and adding more complexity. Computer science knowledge and/or developer knowledge required links if you want to dig further: Scilla - language grammar Scilla - Foundations for Verifiable Decentralised Computations on a Blockchain Gas Accounting NUS x Zilliqa: Smart contract language workshop
 
Easier to follow links on programming Scilla https://learnscilla.com/home Ivan on Tech
 
Roadmap / Zilliqa 2.0
 
There is no strict defined roadmap but here are topics being worked on. And via the Zilliqa website there is also more information on the projects they are working on.
 
Business & Partnerships
 
It’s not only technology in which Zilliqa seems to be excelling as their ecosystem has been expanding and starting to grow rapidly. The project is on a mission to provide OpenFinance (OpFi) to the world and Singapore is the right place to be due to its progressive regulations and futuristic thinking. Singapore has taken a proactive approach towards cryptocurrencies by introducing the Payment Services Act 2019 (PS Act). Among other things, the PS Act will regulate intermediaries dealing with certain cryptocurrencies, with a particular focus on consumer protection and anti-money laundering. It will also provide a stable regulatory licensing and operating framework for cryptocurrency entities, effectively covering all crypto businesses and exchanges based in Singapore. According to PWC 82% of the surveyed executives in Singapore reported blockchain initiatives underway and 13% of them have already brought the initiatives live to the market. There is also an increasing list of organizations that are starting to provide digital payment services. Moreover, Singaporean blockchain developers Building Cities Beyond has recently created an innovation $15 million grant to encourage development on its ecosystem. This all suggests that Singapore tries to position itself as (one of) the leading blockchain hubs in the world.
 
Zilliqa seems to already take advantage of this and recently helped launch Hg Exchange on their platform, together with financial institutions PhillipCapital, PrimePartners and Fundnel. Hg Exchange, which is now approved by the Monetary Authority of Singapore (MAS), uses smart contracts to represent digital assets. Through Hg Exchange financial institutions worldwide can use Zilliqa's safe-by-design smart contracts to enable the trading of private equities. For example, think of companies such as Grab, Airbnb, SpaceX that are not available for public trading right now. Hg Exchange will allow investors to buy shares of private companies & unicorns and capture their value before an IPO. Anquan, the main company behind Zilliqa, has also recently announced that they became a partner and shareholder in TEN31 Bank, which is a fully regulated bank allowing for tokenization of assets and is aiming to bridge the gap between conventional banking and the blockchain world. If STOs, the tokenization of assets, and equity trading will continue to increase, then Zilliqa’s public blockchain would be the ideal candidate due to its strategic positioning, partnerships, regulatory compliance and the technology that is being built on top of it.
 
What is also very encouraging is their focus on banking the un(der)banked. They are launching a stablecoin basket starting with XSGD. As many of you know, stablecoins are currently mostly used for trading. However, Zilliqa is actively trying to broaden the use case of stablecoins. I recommend everybody to read this text that Amrit Kumar wrote (one of the co-founders). These stablecoins will be integrated in the traditional markets and bridge the gap between the crypto world and the traditional world. This could potentially revolutionize and legitimise the crypto space if retailers and companies will for example start to use stablecoins for payments or remittances, instead of it solely being used for trading.
 
Zilliqa also released their DeFi strategic roadmap (dating November 2019) which seems to be aligning well with their OpFi strategy. A non-custodial DEX is coming to Zilliqa made by Switcheo which allows cross-chain trading (atomic swaps) between ETH, EOS and ZIL based tokens. They also signed a Memorandum of Understanding for a (soon to be announced) USD stablecoin. And as Zilliqa is all about regulations and being compliant, I’m speculating on it to be a regulated USD stablecoin. Furthermore, XSGD is already created and visible on block explorer and XIDR (Indonesian Stablecoin) is also coming soon via StraitsX. Here also an overview of the Tech Stack for Financial Applications from September 2019. Further quoting Amrit Kumar on this:
 
There are two basic building blocks in DeFi/OpFi though: 1) stablecoins as you need a non-volatile currency to get access to this market and 2) a dex to be able to trade all these financial assets. The rest are built on top of these blocks.
 
So far, together with our partners and community, we have worked on developing these building blocks with XSGD as a stablecoin. We are working on bringing a USD-backed stablecoin as well. We will soon have a decentralised exchange developed by Switcheo. And with HGX going live, we are also venturing into the tokenization space. More to come in the future.”
 
Additionally, they also have this ZILHive initiative that injects capital into projects. There have been already 6 waves of various teams working on infrastructure, innovation and research, and they are not from ASEAN or Singapore only but global: see Grantees breakdown by country. Over 60 project teams from over 20 countries have contributed to Zilliqa's ecosystem. This includes individuals and teams developing wallets, explorers, developer toolkits, smart contract testing frameworks, dapps, etc. As some of you may know, Unstoppable Domains (UD) blew up when they launched on Zilliqa. UD aims to replace cryptocurrency addresses with a human-readable name and allows for uncensorable websites. Zilliqa will probably be the only one able to handle all these transactions onchain due to ability to scale and its resulting low fees which is why the UD team launched this on Zilliqa in the first place. Furthermore, Zilliqa also has a strong emphasis on security, compliance, and privacy, which is why they partnered with companies like Elliptic, ChainSecurity (part of PwC Switzerland), and Incognito. Their sister company Aqilliz (Zilliqa spelled backwards) focuses on revolutionizing the digital advertising space and is doing interesting things like using Zilliqa to track outdoor digital ads with companies like Foodpanda.
 
Zilliqa is listed on nearly all major exchanges, having several different fiat-gateways and recently have been added to Binance’s margin trading and futures trading with really good volume. They also have a very impressive team with good credentials and experience. They don't just have “tech people”. They have a mix of tech people, business people, marketeers, scientists, and more. Naturally, it's good to have a mix of people with different skill sets if you work in the crypto space.
 
Marketing & Community
 
Zilliqa has a very strong community. If you just follow their Twitter their engagement is much higher for a coin that has approximately 80k followers. They also have been ‘coin of the day’ by LunarCrush many times. LunarCrush tracks real-time cryptocurrency value and social data. According to their data, it seems Zilliqa has a more fundamental and deeper understanding of marketing and community engagement than almost all other coins. While almost all coins have been a bit frozen in the last months, Zilliqa seems to be on its own bull run. It was somewhere in the 100s a few months ago and is currently ranked #46 on CoinGecko. Their official Telegram also has over 20k people and is very active, and their community channel which is over 7k now is more active and larger than many other official channels. Their local communities also seem to be growing.
 
Moreover, their community started ‘Zillacracy’ together with the Zilliqa core team ( see www.zillacracy.com ). It’s a community-run initiative where people from all over the world are now helping with marketing and development on Zilliqa. Since its launch in February 2020 they have been doing a lot and will also run their own non-custodial seed node for staking. This seed node will also allow them to start generating revenue for them to become a self sustaining entity that could potentially scale up to become a decentralized company working in parallel with the Zilliqa core team. Comparing it to all the other smart contract platforms (e.g. Cardano, EOS, Tezos etc.) they don't seem to have started a similar initiative (correct me if I’m wrong though). This suggests in my opinion that these other smart contract platforms do not fully understand how to utilize the ‘power of the community’. This is something you cannot ‘buy with money’ and gives many projects in the space a disadvantage.
 
Zilliqa also released two social products called SocialPay and Zeeves. SocialPay allows users to earn ZILs while tweeting with a specific hashtag. They have recently used it in partnership with the Singapore Red Cross for a marketing campaign after their initial pilot program. It seems like a very valuable social product with a good use case. I can see a lot of traditional companies entering the space through this product, which they seem to suggest will happen. Tokenizing hashtags with smart contracts to get network effect is a very smart and innovative idea.
 
Regarding Zeeves, this is a tipping bot for Telegram. They already have 1000s of signups and they plan to keep upgrading it for more and more people to use it (e.g. they recently have added a quiz features). They also use it during AMAs to reward people in real-time. It’s a very smart approach to grow their communities and get familiar with ZIL. I can see this becoming very big on Telegram. This tool suggests, again, that the Zilliqa team has a deeper understanding of what the crypto space and community needs and is good at finding the right innovative tools to grow and scale.
 
To be honest, I haven’t covered everything (i’m also reaching the character limited haha). So many updates happening lately that it's hard to keep up, such as the International Monetary Fund mentioning Zilliqa in their report, custodial and non-custodial Staking, Binance Margin, Futures, Widget, entering the Indian market, and more. The Head of Marketing Colin Miles has also released this as an overview of what is coming next. And last but not least, Vitalik Buterin has been mentioning Zilliqa lately acknowledging Zilliqa and mentioning that both projects have a lot of room to grow. There is much more info of course and a good part of it has been served to you on a silver platter. I invite you to continue researching by yourself :-) And if you have any comments or questions please post here!
submitted by haveyouheardaboutit to CryptoCurrency [link] [comments]

Why i’m bullish on Zilliqa (long read)

Hey all, I've been researching coins since 2017 and have gone through 100s of them in the last 3 years. I got introduced to blockchain via Bitcoin of course, analysed Ethereum thereafter and from that moment I have a keen interest in smart contact platforms. I’m passionate about Ethereum but I find Zilliqa to have a better risk reward ratio. Especially because Zilliqa has found an elegant balance between being secure, decentralised and scalable in my opinion.
 
Below I post my analysis why from all the coins I went through I’m most bullish on Zilliqa (yes I went through Tezos, EOS, NEO, VeChain, Harmony, Algorand, Cardano etc.). Note that this is not investment advice and although it's a thorough analysis there is obviously some bias involved. Looking forward to what you all think!
 
Fun fact: the name Zilliqa is a play on ‘silica’ silicon dioxide which means “Silicon for the high-throughput consensus computer.”
 
This post is divided into (i) Technology, (ii) Business & Partnerships, and (iii) Marketing & Community. I’ve tried to make the technology part readable for a broad audience. If you’ve ever tried understanding the inner workings of Bitcoin and Ethereum you should be able to grasp most parts. Otherwise just skim through and once you are zoning out head to the next part.
 
Technology and some more:
 
Introduction The technology is one of the main reasons why I’m so bullish on Zilliqa. First thing you see on their website is: “Zilliqa is a high-performance, high-security blockchain platform for enterprises and next-generation applications.” These are some bold statements.
 
Before we deep dive into the technology let’s take a step back in time first as they have quite the history. The initial research paper from which Zilliqa originated dates back to August 2016: Elastico: A Secure Sharding Protocol For Open Blockchains where Loi Luu (Kyber Network) is one of the co-authors. Other ideas that led to the development of what Zilliqa has become today are: Bitcoin-NG, collective signing CoSi, ByzCoin and Omniledger.
 
The technical white paper was made public in August 2017 and since then they have achieved everything stated in the white paper and also created their own open source intermediate level smart contract language called Scilla (functional programming language similar to OCaml) too.
 
Mainnet is live since end of January 2019 with daily transaction rate growing continuously. About a week ago mainnet reached 5 million transactions, 500.000+ addresses in total along with 2400 nodes keeping the network decentralised and secure. Circulating supply is nearing 11 billion and currently only mining rewards are left. Maximum supply is 21 billion with annual inflation being 7.13% currently and will only decrease with time.
 
Zilliqa realised early on that the usage of public cryptocurrencies and smart contracts were increasing but decentralised, secure and scalable alternatives were lacking in the crypto space. They proposed to apply sharding onto a public smart contract blockchain where the transaction rate increases almost linear with the increase in amount of nodes. More nodes = higher transaction throughput and increased decentralisation. Sharding comes in many forms and Zilliqa uses network-, transaction- and computational sharding. Network sharding opens up the possibility of using transaction- and computational sharding on top. Zilliqa does not use state sharding for now. We’ll come back to this later.
 
Before we continue disecting how Zilliqa achieves such from a technological standpoint it’s good to keep in mind that a blockchain being decentralised and secure and scalable is still one of the main hurdles in allowing widespread usage of decentralised networks. In my opinion this needs to be solved first before blockchains can get to the point where they can create and add large scale value. So I invite you to read the next section to grasp the underlying fundamentals. Because after all these premises need to be true otherwise there isn’t a fundamental case to be bullish on Zilliqa, right?
 
Down the rabbit hole
 
How have they achieved this? Let’s define the basics first: key players on Zilliqa are the users and the miners. A user is anybody who uses the blockchain to transfer funds or run smart contracts. Miners are the (shard) nodes in the network who run the consensus protocol and get rewarded for their service in Zillings (ZIL). The mining network is divided into several smaller networks called shards, which is also referred to as ‘network sharding’. Miners subsequently are randomly assigned to a shard by another set of miners called DS (Directory Service) nodes. The regular shards process transactions and the outputs of these shards are eventually combined by the DS shard as they reach consensus on the final state. More on how these DS shards reach consensus (via pBFT) will be explained later on.
 
The Zilliqa network produces two types of blocks: DS blocks and Tx blocks. One DS Block consists of 100 Tx Blocks. And as previously mentioned there are two types of nodes concerned with reaching consensus: shard nodes and DS nodes. Becoming a shard node or DS node is being defined by the result of a PoW cycle (Ethash) at the beginning of the DS Block. All candidate mining nodes compete with each other and run the PoW (Proof-of-Work) cycle for 60 seconds and the submissions achieving the highest difficulty will be allowed on the network. And to put it in perspective: the average difficulty for one DS node is ~ 2 Th/s equaling 2.000.000 Mh/s or 55 thousand+ GeForce GTX 1070 / 8 GB GPUs at 35.4 Mh/s. Each DS Block 10 new DS nodes are allowed. And a shard node needs to provide around 8.53 GH/s currently (around 240 GTX 1070s). Dual mining ETH/ETC and ZIL is possible and can be done via mining software such as Phoenix and Claymore. There are pools and if you have large amounts of hashing power (Ethash) available you could mine solo.
 
The PoW cycle of 60 seconds is a peak performance and acts as an entry ticket to the network. The entry ticket is called a sybil resistance mechanism and makes it incredibly hard for adversaries to spawn lots of identities and manipulate the network with these identities. And after every 100 Tx Blocks which corresponds to roughly 1,5 hour this PoW process repeats. In between these 1,5 hour no PoW needs to be done meaning Zilliqa’s energy consumption to keep the network secure is low. For more detailed information on how mining works click here.
Okay, hats off to you. You have made it this far. Before we go any deeper down the rabbit hole we first must understand why Zilliqa goes through all of the above technicalities and understand a bit more what a blockchain on a more fundamental level is. Because the core of Zilliqa’s consensus protocol relies on the usage of pBFT (practical Byzantine Fault Tolerance) we need to know more about state machines and their function. Navigate to Viewblock, a Zilliqa block explorer, and just come back to this article. We will use this site to navigate through a few concepts.
 
We have established that Zilliqa is a public and distributed blockchain. Meaning that everyone with an internet connection can send ZILs, trigger smart contracts etc. and there is no central authority who fully controls the network. Zilliqa and other public and distributed blockchains (like Bitcoin and Ethereum) can also be defined as state machines.
 
Taking the liberty of paraphrasing examples and definitions given by Samuel Brooks’ medium article, he describes the definition of a blockchain (like Zilliqa) as:
“A peer-to-peer, append-only datastore that uses consensus to synchronise cryptographically-secure data”.
 
Next he states that: >“blockchains are fundamentally systems for managing valid state transitions”.* For some more context, I recommend reading the whole medium article to get a better grasp of the definitions and understanding of state machines. Nevertheless, let’s try to simplify and compile it into a single paragraph. Take traffic lights as an example: all its states (red, amber and green) are predefined, all possible outcomes are known and it doesn’t matter if you encounter the traffic light today or tomorrow. It will still behave the same. Managing the states of a traffic light can be done by triggering a sensor on the road or pushing a button resulting in one traffic lights’ state going from green to red (via amber) and another light from red to green.
 
With public blockchains like Zilliqa this isn’t so straightforward and simple. It started with block #1 almost 1,5 years ago and every 45 seconds or so a new block linked to the previous block is being added. Resulting in a chain of blocks with transactions in it that everyone can verify from block #1 to the current #647.000+ block. The state is ever changing and the states it can find itself in are infinite. And while the traffic light might work together in tandem with various other traffic lights, it’s rather insignificant comparing it to a public blockchain. Because Zilliqa consists of 2400 nodes who need to work together to achieve consensus on what the latest valid state is while some of these nodes may have latency or broadcast issues, drop offline or are deliberately trying to attack the network etc.
 
Now go back to the Viewblock page take a look at the amount of transaction, addresses, block and DS height and then hit refresh. Obviously as expected you see new incremented values on one or all parameters. And how did the Zilliqa blockchain manage to transition from a previous valid state to the latest valid state? By using pBFT to reach consensus on the latest valid state.
 
After having obtained the entry ticket, miners execute pBFT to reach consensus on the ever changing state of the blockchain. pBFT requires a series of network communication between nodes, and as such there is no GPU involved (but CPU). Resulting in the total energy consumed to keep the blockchain secure, decentralised and scalable being low.
 
pBFT stands for practical Byzantine Fault Tolerance and is an optimisation on the Byzantine Fault Tolerant algorithm. To quote Blockonomi: “In the context of distributed systems, Byzantine Fault Tolerance is the ability of a distributed computer network to function as desired and correctly reach a sufficient consensus despite malicious components (nodes) of the system failing or propagating incorrect information to other peers.” Zilliqa is such a distributed computer network and depends on the honesty of the nodes (shard and DS) to reach consensus and to continuously update the state with the latest block. If pBFT is a new term for you I can highly recommend the Blockonomi article.
 
The idea of pBFT was introduced in 1999 - one of the authors even won a Turing award for it - and it is well researched and applied in various blockchains and distributed systems nowadays. If you want more advanced information than the Blockonomi link provides click here. And if you’re in between Blockonomi and University of Singapore read the Zilliqa Design Story Part 2 dating from October 2017.
Quoting from the Zilliqa tech whitepaper: “pBFT relies upon a correct leader (which is randomly selected) to begin each phase and proceed when the sufficient majority exists. In case the leader is byzantine it can stall the entire consensus protocol. To address this challenge, pBFT offers a view change protocol to replace the byzantine leader with another one.”
 
pBFT can tolerate ⅓ of the nodes being dishonest (offline counts as Byzantine = dishonest) and the consensus protocol will function without stalling or hiccups. Once there are more than ⅓ of dishonest nodes but no more than ⅔ the network will be stalled and a view change will be triggered to elect a new DS leader. Only when more than ⅔ of the nodes are dishonest (>66%) double spend attacks become possible.
 
If the network stalls no transactions can be processed and one has to wait until a new honest leader has been elected. When the mainnet was just launched and in its early phases, view changes happened regularly. As of today the last stalling of the network - and view change being triggered - was at the end of October 2019.
 
Another benefit of using pBFT for consensus besides low energy is the immediate finality it provides. Once your transaction is included in a block and the block is added to the chain it’s done. Lastly, take a look at this article where three types of finality are being defined: probabilistic, absolute and economic finality. Zilliqa falls under the absolute finality (just like Tendermint for example). Although lengthy already we skipped through some of the inner workings from Zilliqa’s consensus: read the Zilliqa Design Story Part 3 and you will be close to having a complete picture on it. Enough about PoW, sybil resistance mechanism, pBFT etc. Another thing we haven’t looked at yet is the amount of decentralisation.
 
Decentralisation
 
Currently there are four shards, each one of them consisting of 600 nodes. 1 shard with 600 so called DS nodes (Directory Service - they need to achieve a higher difficulty than shard nodes) and 1800 shard nodes of which 250 are shard guards (centralised nodes controlled by the team). The amount of shard guards has been steadily declining from 1200 in January 2019 to 250 as of May 2020. On the Viewblock statistics you can see that many of the nodes are being located in the US but those are only the (CPU parts of the) shard nodes who perform pBFT. There is no data from where the PoW sources are coming. And when the Zilliqa blockchain starts reaching their transaction capacity limit, a network upgrade needs to be executed to lift the current cap of maximum 2400 nodes to allow more nodes and formation of more shards which will allow to network to keep on scaling according to demand.
Besides shard nodes there are also seed nodes. The main role of seed nodes is to serve as direct access points (for end users and clients) to the core Zilliqa network that validates transactions. Seed nodes consolidate transaction requests and forward these to the lookup nodes (another type of nodes) for distribution to the shards in the network. Seed nodes also maintain the entire transaction history and the global state of the blockchain which is needed to provide services such as block explorers. Seed nodes in the Zilliqa network are comparable to Infura on Ethereum.
 
The seed nodes were first only operated by Zilliqa themselves, exchanges and Viewblock. Operators of seed nodes like exchanges had no incentive to open them for the greater public.They were centralised at first. Decentralisation at the seed nodes level has been steadily rolled out since March 2020 ( Zilliqa Improvement Proposal 3 ). Currently the amount of seed nodes is being increased, they are public facing and at the same time PoS is applied to incentivize seed node operators and make it possible for ZIL holders to stake and earn passive yields. Important distinction: seed nodes are not involved with consensus! That is still PoW as entry ticket and pBFT for the actual consensus.
 
5% of the block rewards are being assigned to seed nodes (from the beginning in 2019) and those are being used to pay out ZIL stakers.The 5% block rewards with an annual yield of 10.03% translates to roughly 610 MM ZILs in total that can be staked. Exchanges use the custodial variant of staking and wallets like Moonlet will use the non custodial version (starting in Q3 2020). Staking is being done by sending ZILs to a smart contract created by Zilliqa and audited by Quantstamp.
 
With a high amount of DS & shard nodes and seed nodes becoming more decentralised too, Zilliqa qualifies for the label of decentralised in my opinion.
 
Smart contracts
 
Let me start by saying I’m not a developer and my programming skills are quite limited. So I‘m taking the ELI5 route (maybe 12) but if you are familiar with Javascript, Solidity or specifically OCaml please head straight to Scilla - read the docs to get a good initial grasp of how Zilliqa’s smart contract language Scilla works and if you ask yourself “why another programming language?” check this article. And if you want to play around with some sample contracts in an IDE click here. Faucet can be found here. And more information on architecture, dapp development and API can be found on the Developer Portal.
If you are more into listening and watching: check this recent webinar explaining Zilliqa and Scilla. Link is time stamped so you’ll start right away with a platform introduction, R&D roadmap 2020 and afterwards a proper Scilla introduction.
 
Generalised: programming languages can be divided into being ‘object oriented’ or ‘functional’. Here is an ELI5 given by software development academy: > “all programmes have two basic components, data – what the programme knows – and behaviour – what the programme can do with that data. So object-oriented programming states that combining data and related behaviours in one place, is called “object”, which makes it easier to understand how a particular program works. On the other hand, functional programming argues that data and behaviour are different things and should be separated to ensure their clarity.”
 
Scilla is on the functional side and shares similarities with OCaml: > OCaml is a general purpose programming language with an emphasis on expressiveness and safety. It has an advanced type system that helps catch your mistakes without getting in your way. It's used in environments where a single mistake can cost millions and speed matters, is supported by an active community, and has a rich set of libraries and development tools. For all its power, OCaml is also pretty simple, which is one reason it's often used as a teaching language.
 
Scilla is blockchain agnostic, can be implemented onto other blockchains as well, is recognised by academics and won a so called Distinguished Artifact Award award at the end of last year.
 
One of the reasons why the Zilliqa team decided to create their own programming language focused on preventing smart contract vulnerabilities safety is that adding logic on a blockchain, programming, means that you cannot afford to make mistakes. Otherwise it could cost you. It’s all great and fun blockchains being immutable but updating your code because you found a bug isn’t the same as with a regular web application for example. And with smart contracts it inherently involves cryptocurrencies in some form thus value.
 
Another difference with programming languages on a blockchain is gas. Every transaction you do on a smart contract platform like Zilliqa for Ethereum costs gas. With gas you basically pay for computational costs. Sending a ZIL from address A to address B costs 0.001 ZIL currently. Smart contracts are more complex, often involve various functions and require more gas (if gas is a new concept click here ).
 
So with Scilla, similar to Solidity, you need to make sure that “every function in your smart contract will run as expected without hitting gas limits. An improper resource analysis may lead to situations where funds may get stuck simply because a part of the smart contract code cannot be executed due to gas limits. Such constraints are not present in traditional software systems”. Scilla design story part 1
 
Some examples of smart contract issues you’d want to avoid are: leaking funds, ‘unexpected changes to critical state variables’ (example: someone other than you setting his or her address as the owner of the smart contract after creation) or simply killing a contract.
 
Scilla also allows for formal verification. Wikipedia to the rescue:
In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics.
 
Formal verification can be helpful in proving the correctness of systems such as: cryptographic protocols, combinational circuits, digital circuits with internal memory, and software expressed as source code.
 
Scilla is being developed hand-in-hand with formalization of its semantics and its embedding into the Coq proof assistant — a state-of-the art tool for mechanized proofs about properties of programs.”
 
Simply put, with Scilla and accompanying tooling developers can be mathematically sure and proof that the smart contract they’ve written does what he or she intends it to do.
 
Smart contract on a sharded environment and state sharding
 
There is one more topic I’d like to touch on: smart contract execution in a sharded environment (and what is the effect of state sharding). This is a complex topic. I’m not able to explain it any easier than what is posted here. But I will try to compress the post into something easy to digest.
 
Earlier on we have established that Zilliqa can process transactions in parallel due to network sharding. This is where the linear scalability comes from. We can define simple transactions: a transaction from address A to B (Category 1), a transaction where a user interacts with one smart contract (Category 2) and the most complex ones where triggering a transaction results in multiple smart contracts being involved (Category 3). The shards are able to process transactions on their own without interference of the other shards. With Category 1 transactions that is doable, with Category 2 transactions sometimes if that address is in the same shard as the smart contract but with Category 3 you definitely need communication between the shards. Solving that requires to make a set of communication rules the protocol needs to follow in order to process all transactions in a generalised fashion.
 
And this is where the downsides of state sharding comes in currently. All shards in Zilliqa have access to the complete state. Yes the state size (0.1 GB at the moment) grows and all of the nodes need to store it but it also means that they don’t need to shop around for information available on other shards. Requiring more communication and adding more complexity. Computer science knowledge and/or developer knowledge required links if you want to dig further: Scilla - language grammar Scilla - Foundations for Verifiable Decentralised Computations on a Blockchain Gas Accounting NUS x Zilliqa: Smart contract language workshop
 
Easier to follow links on programming Scilla https://learnscilla.com/home Ivan on Tech
 
Roadmap / Zilliqa 2.0
 
There is no strict defined roadmap but here are topics being worked on. And via the Zilliqa website there is also more information on the projects they are working on.
 
Business & Partnerships  
It’s not only technology in which Zilliqa seems to be excelling as their ecosystem has been expanding and starting to grow rapidly. The project is on a mission to provide OpenFinance (OpFi) to the world and Singapore is the right place to be due to its progressive regulations and futuristic thinking. Singapore has taken a proactive approach towards cryptocurrencies by introducing the Payment Services Act 2019 (PS Act). Among other things, the PS Act will regulate intermediaries dealing with certain cryptocurrencies, with a particular focus on consumer protection and anti-money laundering. It will also provide a stable regulatory licensing and operating framework for cryptocurrency entities, effectively covering all crypto businesses and exchanges based in Singapore. According to PWC 82% of the surveyed executives in Singapore reported blockchain initiatives underway and 13% of them have already brought the initiatives live to the market. There is also an increasing list of organisations that are starting to provide digital payment services. Moreover, Singaporean blockchain developers Building Cities Beyond has recently created an innovation $15 million grant to encourage development on its ecosystem. This all suggest that Singapore tries to position itself as (one of) the leading blockchain hubs in the world.
 
Zilliqa seems to already taking advantage of this and recently helped launch Hg Exchange on their platform, together with financial institutions PhillipCapital, PrimePartners and Fundnel. Hg Exchange, which is now approved by the Monetary Authority of Singapore (MAS), uses smart contracts to represent digital assets. Through Hg Exchange financial institutions worldwide can use Zilliqa's safe-by-design smart contracts to enable the trading of private equities. For example, think of companies such as Grab, AirBnB, SpaceX that are not available for public trading right now. Hg Exchange will allow investors to buy shares of private companies & unicorns and capture their value before an IPO. Anquan, the main company behind Zilliqa, has also recently announced that they became a partner and shareholder in TEN31 Bank, which is a fully regulated bank allowing for tokenization of assets and is aiming to bridge the gap between conventional banking and the blockchain world. If STOs, the tokenization of assets, and equity trading will continue to increase, then Zilliqa’s public blockchain would be the ideal candidate due to its strategic positioning, partnerships, regulatory compliance and the technology that is being built on top of it.
 
What is also very encouraging is their focus on banking the un(der)banked. They are launching a stablecoin basket starting with XSGD. As many of you know, stablecoins are currently mostly used for trading. However, Zilliqa is actively trying to broaden the use case of stablecoins. I recommend everybody to read this text that Amrit Kumar wrote (one of the co-founders). These stablecoins will be integrated in the traditional markets and bridge the gap between the crypto world and the traditional world. This could potentially revolutionize and legitimise the crypto space if retailers and companies will for example start to use stablecoins for payments or remittances, instead of it solely being used for trading.
 
Zilliqa also released their DeFi strategic roadmap (dating November 2019) which seems to be aligning well with their OpFi strategy. A non-custodial DEX is coming to Zilliqa made by Switcheo which allows cross-chain trading (atomic swaps) between ETH, EOS and ZIL based tokens. They also signed a Memorandum of Understanding for a (soon to be announced) USD stablecoin. And as Zilliqa is all about regulations and being compliant, I’m speculating on it to be a regulated USD stablecoin. Furthermore, XSGD is already created and visible on block explorer and XIDR (Indonesian Stablecoin) is also coming soon via StraitsX. Here also an overview of the Tech Stack for Financial Applications from September 2019. Further quoting Amrit Kumar on this:
 
There are two basic building blocks in DeFi/OpFi though: 1) stablecoins as you need a non-volatile currency to get access to this market and 2) a dex to be able to trade all these financial assets. The rest are build on top of these blocks.
 
So far, together with our partners and community, we have worked on developing these building blocks with XSGD as a stablecoin. We are working on bringing a USD-backed stablecoin as well. We will soon have a decentralised exchange developed by Switcheo. And with HGX going live, we are also venturing into the tokenization space. More to come in the future.”*
 
Additionally, they also have this ZILHive initiative that injects capital into projects. There have been already 6 waves of various teams working on infrastructure, innovation and research, and they are not from ASEAN or Singapore only but global: see Grantees breakdown by country. Over 60 project teams from over 20 countries have contributed to Zilliqa's ecosystem. This includes individuals and teams developing wallets, explorers, developer toolkits, smart contract testing frameworks, dapps, etc. As some of you may know, Unstoppable Domains (UD) blew up when they launched on Zilliqa. UD aims to replace cryptocurrency addresses with a human readable name and allows for uncensorable websites. Zilliqa will probably be the only one able to handle all these transactions onchain due to ability to scale and its resulting low fees which is why the UD team launched this on Zilliqa in the first place. Furthermore, Zilliqa also has a strong emphasis on security, compliance, and privacy, which is why they partnered with companies like Elliptic, ChainSecurity (part of PwC Switzerland), and Incognito. Their sister company Aqilliz (Zilliqa spelled backwards) focuses on revolutionizing the digital advertising space and is doing interesting things like using Zilliqa to track outdoor digital ads with companies like Foodpanda.
 
Zilliqa is listed on nearly all major exchanges, having several different fiat-gateways and recently have been added to Binance’s margin trading and futures trading with really good volume. They also have a very impressive team with good credentials and experience. They dont just have “tech people”. They have a mix of tech people, business people, marketeers, scientists, and more. Naturally, it's good to have a mix of people with different skill sets if you work in the crypto space.
 
Marketing & Community
 
Zilliqa has a very strong community. If you just follow their Twitter their engagement is much higher for a coin that has approximately 80k followers. They also have been ‘coin of the day’ by LunarCrush many times. LunarCrush tracks real-time cryptocurrency value and social data. According to their data it seems Zilliqa has a more fundamental and deeper understanding of marketing and community engagement than almost all other coins. While almost all coins have been a bit frozen in the last months, Zilliqa seems to be on its own bull run. It was somewhere in the 100s a few months ago and is currently ranked #46 on CoinGecko. Their official Telegram also has over 20k people and is very active, and their community channel which is over 7k now is more active and larger than many other official channels. Their local communities) also seem to be growing.
 
Moreover, their community started ‘Zillacracy’ together with the Zilliqa core team ( see www.zillacracy.com ). It’s a community run initiative where people from all over the world are now helping with marketing and development on Zilliqa. Since its launch in February 2020 they have been doing a lot and will also run their own non custodial seed node for staking. This seed node will also allow them to start generating revenue for them to become a self sustaining entity that could potentially scale up to become a decentralized company working in parallel with the Zilliqa core team. Comparing it to all the other smart contract platforms (e.g. Cardano, EOS, Tezos etc.) they don't seem to have started a similar initiatives (correct me if I’m wrong though). This suggest in my opinion that these other smart contract platforms do not fully understand how to utilize the ‘power of the community’. This is something you cannot ‘buy with money’ and gives many projects in the space a disadvantage.
 
Zilliqa also released two social products called SocialPay and Zeeves. SocialPay allows users to earn ZILs while tweeting with a specific hashtag. They have recently used it in partnership with the Singapore Red Cross for a marketing campaign after their initial pilot program. It seems like a very valuable social product with a good use case. I can see a lot of traditional companies entering the space through this product, which they seem to suggest will happen. Tokenizing hashtags with smart contracts to get network effect is a very smart and innovative idea.
 
Regarding Zeeves, this is a tipping bot for Telegram. They already have 1000s of signups and they plan to keep upgrading it for more and more people to use it (e.g. they recently have added a quiz features). They also use it during AMAs to reward people in real time. It’s a very smart approach to grow their communities and get familiar with ZIL. I can see this becoming very big on Telegram. This tool suggests, again, that the Zilliqa team has a deeper understanding what the crypto space and community needs and is good at finding the right innovative tools to grow and scale.
 
To be honest, I haven’t covered everything (i’m also reaching the character limited haha). So many updates happening lately that it's hard to keep up, such as the International Monetary Fund mentioning Zilliqa in their report, custodial and non-custodial Staking, Binance Margin, Futures & Widget, entering the Indian market, and more. The Head of Marketing Colin Miles has also released this as an overview of what is coming next. And last but not least, Vitalik Buterin has been mentioning Zilliqa lately acknowledging Zilliqa and mentioning that both projects have a lot of room to grow. There is much more info of course and a good part of it has been served to you on a silver platter. I invite you to continue researching by yourself :-) And if you have any comments or questions please post here!
submitted by haveyouheardaboutit to CryptoCurrency [link] [comments]

IQ stock broker is a Forex & bitcoin Company in USA Founded in 2012 by a team of highly motivated professionals who are very passionate about trading on the world’s financial market, and are keen on empowering

Bitcoin, Cryptocurrency, forex, make money, online trade, stock exchange
IQ Stock Broker
IQ stock broker is a Forex & bitcoin Company in USA Founded in 2012 by a team of highly motivated professionals who are very passionate about trading on the world’s financial market, and are keen on empowering others on the same bailiwick. Binary options, or digital options, have continued to gain popularity in the past decade, many ambitious traders see binary options as their preferred choice of investment vehicle in this time of market instability. “IQ Stock Broker” stands out as a leader among the brokers out there with a team that is made up of professionals with experience in Binary trading, risk management, derivatives and international laws and legislation. Their combined knowledge and experience trumps that held by most operators in the market. Learn about bitcoin price in USD here and convert bitcoin to dollar, bitcoin to pounds, bitcoin to euro, bitcoin to yen, bitcoin to naira. Create your own bitcoin wallet. Daily bitcoin news. everything you need about bitcoin mining, bitcoin trade, analysis, bitcoin account, bitcoin atm, bitcoin address, bitcoin stock, bitcoin cash, bitcoin halving, bitcoin stock, bitcoin atm, bitcoin wallet, bitcoin mining, bitcoin news, bitcoin address, bitcoin app, bitcoin atm nyc , bitcoin account, bitcoin atm machine ,bitcoin analysis ,bitcoin all time high , bitcoin address lookup , a bitcoin atm ,a bitcoin worth ,a bitcoin atm near me , bitcoin machine ,a bitcoin wallet ,a bitcoin machine near me ,a bitcoin to naira , a bitcoin to dollar , a bitcoin miner ,a bitcoin address , bitcoin billionaires , bitcoin block explorer , bitcoin buy , bitcoin blockchain , bitcoin bsv , bitcoin bank , bitcoin bubble , bitcoin buy or sell ,bitcoin bloomberg , bitcoin blast ,b bitcoin symbol ,bitcoin code ,b bitcoin price ,bitcoin b text , bitcoin b font , bitcoin b wave ,bitcoin b logo ,bitcoin b unicode , bitcoin b letter ,bitcointool.b ,bitcoin cash news , bitcoin crash ,bitcoin current price , bitcoin core , bitcoin cash halving , bitcoin cost , c bitcoin miner , c bitcoin library ,bitcoin c'mon do something , bitcoin c code ,bitcointicker. c bitcoin c github , bitcoin c implementation , bitcointalk c-note , c-cex itcointalk , bitcoin definition ,bitcoin dominance , bitcoin drop , bitcoin diamond ,bitcoin difficulty , bitcoin debit card ,bitcoin dollar ,bitcoin depot , bitcoin documentary ,bitcoin down , bitcoin d.a.v.e, bitcoins d. lynnwood , bitcoin d day , bitcoin d , d konnect bitcoin , d-wave bitcoin mining , the d bitcoin atm, schedule d bitcoin , bitcoin macd , d lynnwood bitcoins , bitcoin explorer, bitcoin exchange rate ,bitcoin explained ,bitcoin ethereum , bitcoin emoji , bitcoin escape from tarkov ,bitcoin energy consumption, bitcoin evolution ,e bitcoin wallet ,e bitcoin cash , e bitcoin kurs , e bitcoin euro, bitcoin e.g. crossword clue ,bitcoin e wallet login , bitcoin e wallet app , bitcoin e commerce ,bitcoin e wallet malaysia ,bitcoin e blockchain , bitcoin futures ,bitcoin farm tarkov, bitcoin around pretoria ,bitcoin around the world documentary ,bitcoin around the , bitcoin atm around me ,bitcoin machine around me , bitcoin legality around the world , bitcoin atm around the world , bitcoin price around the world , bitcoin as an investment , stock exchange about , stock market about to crash , stock market about ,stock market about to crash 2019 , stock market about to crash 2018, stock exchange on wall street , house flip on android , flip house before after , house flip before and after photos , house after flip ,flip house with chip and jo ,flip at house, stock market about in hindi , stock exchange on wikipedia , stock market about to drop, stock market about to collapse, stock exchange across the world ,stock market across the world, stock exchange after hours ,stock exchange after election , stock exchange after brexit , stock exchange after budget, bitcoin as a currency ,bitcoin as property ,bitcoin as money , bitcoin as a unit of account, bitcoin as a store of value, bitcoin as a safe haven ,bitcoin as a gift, bitcoin as a medium of exchange ,bitcoin as digital gold , bitcoin at its highest , bitcoin atm near me, bitcoin atm uk , stock exchange australia , stock exchange australian , stock market Australia, stock market australian , stock exchange d , stock market d, stock exchange cote d'ivoire, IQ stock broker is among the stock exchange kuwait listed companies , stock exchange market kuwait, stock exchange معنى ,stock exchange pakistan ,stock exchange online, bitcoin شرح , bitcoin system ,bitcoin to kwd house after flip ,flip house with chip and jo ,flip at house, , bitcoin atm London, bitcoin atm machine, bitcoin atm glasgow , bitcoin atm manchester , bitcoin atm fees , bitcoin atm edinburgh , bitcoin atm liverpool ,bitcoin before halving ,bitcoin before and after , bitcoin before and now , bitcoin before 2009 , bitcoin before ,bitcoin before blockchain , bitcoin before recession , before bitcoin there was ,bitcoin price before halving ,bitcoin price before 5 years , bitcoin behind , bitcoin behind the scenes , bitcoin behind tor ,bitcoin behind proxy ,bitcoin behind technology , blockchain beyond bitcoin , bitcoin node behind nat ,bitcoin cash behind the scenes , bitcoin idea behind ,bitcoin year behind , bitcoin below 7000 ,bitcoin below 9000 , bitcoin below 8000 ,bitcoin below 4000 , bitcoin below 5000 bitcoin below 3000 , and bitcoin App. “IQ Stock Broker” stands out as a one of the leaders in the industry, and here’s why: Our trading platform is 100% web based and thus you won’t have to download any software. This makes it easy to trade from anywhere… at any time. You don’t need to have any previous trading experience to get going. It is as easy as 1-2-3. The interface is remarkably user friendly. We have worked hard to ensure processes are fast and intuitive. Using our platform, customers can trade on options such as currencies, indices, stocks and commodities round the clock. We provide the most flexible pricing and the most suitable options on the market among all the Forex & Bitcoin companies in USA. Our objective is to make the trading process as simple and profitable as possible for all level of trader. Our team consists experienced professionals with backgrounds in binary trading, derivatives, risk management, payment processing as well as international laws and legislation. Contact us for Bitcoin, Cryptocurrency, forex, make money, online trade, stock exchange. IQ stock broker is listed in American Stock Exchange.
https://iqstockbroker.com
Register with us here https://iqstockbroker.com/register
then login here https://iqstockbroker.com/login
submitted by IQstockbroker to u/IQstockbroker [link] [comments]

12-22 13:34 - ' Etherscan Export CSV Data - 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-4699...' by /u/mahdiamolimoghadam removed from /r/Bitcoin within 128-138min

'''
 Etherscan Export CSV Data - 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-46998878-6', { 'anonymize_ip': true }); .ether-search-heading { pointer-events: none !important; } .ether-search-heading .ui-menu-item-wrapper, .[link]^^1 .ui-menu-item-wrapper { cursor: default !important; border-color: transparent !important; 0 } .ui-menu-item .ether-search, .[link]^^2 .ether-search { background-color: transparent !important; border-color: #e7eaf3 !important; } .[link]^^2 .ether-search { background-color: #f8fafd !important; } .ui-menu-item .ether-search, .ui-menu-item .ether-search { background-color: transparent !important; border-color: transparent !important; } body.dark-mode .[link]^^2 .ether-search { background-color: #012137 !important; color: #a2b9c8 !important; border-color: #013558 !important; } //  Eth: $148.33 (-0.12%) Home Blockchain 
View Txns
View Pending Txns
View Contract Internal Txns
 View Blocks Forked Blocks (Reorgs) 
View Uncles
Top Accounts
Verified Contracts
 Tokens 
ERC-20 Top Tokens
View ERC-20 Transfers
ERC-721 Top Tokens
View ERC-721 Transfers
 Resources 
Ethereum Directory
Charts & Stats
Top Statistics
 More Developers 
APIs
Verify Contract
Byte to Opcode
Broadcast TXN
Vyper Online Compiler
 Swarm & ENS 
SWARM Search
SWARM Upload
ENS Events
ENS Lookup
 Service Tracker 
Dapp Tracker New
DEX Tracker
DEX OrderBooks
Gas Tracker
Node Tracker
Loan Tracker
 Misc 
Mining Calculator
Verified Signature
Similiar Contracts
Label Word Cloud
 Sign In  Explorers 
Ethereum Mainnet
Ethereum Mainnet CN
Ropsten Testnet
Kovan Testnet
Rinkeby Testnet
Goerli Testnet
EWC Chain
Beacon Testnet Eth2.0
 All FiltersAddressesTokensName TagsLabelsWebsites 
Download Data (Transactions)
The information you requested can be downloaded from this page. But before continuing please verify that you are not a robot by completing the captcha below.
 Export the earliest 5000 records starting from  Powered by Ethereum 
Etherscan is a Block Explorer and Analytics Platform for Ethereum, a decentralized smart contracts platform.
 Preferences 
Company
About Us
Advertise
Contact Us
Brand Assets
Terms of Service
Community
Developer APIs
Knowledge Base
Network Status
Disqus Comments
Social Links
Twitter
Facebook
Medium
Reddit
Etherscan آ© 2019 (A)
Donations 0x71c7656ec7ab88b098defb751b7401b5f6d8976f
 This website uses cookies to improve your experience and has an updated Privacy Policy. Got It $(window).on('load', function () { // initialization of HSMegaMenu component $('.js-mega-menu').HSMegaMenu({ event: 'hover', pageContainer: $('.container'), breakpoint: 767.98, hideTimeOut: 0 }); }); $(document).on('ready', function () { // initialization of header $.HSCore.components.HSHeader.init($('#header')); // initialization of unfold component $.HSCore.components.HSUnfold.init($('[data-unfold-target]'), { afterOpen: function () { $(this).find('input[type="search"]').focus(); } }); // initialization of malihu scrollbar $.HSCore.components.HSMalihuScrollBar.init($('.js-scrollbar')); // initialization of focus state $.HSCore.components.HSFocusState.init(); // initialization of go to $.HSCore.components.HSGoTo.init('.js-go-to'); // initialization of cubeportfolio //$.HSCore.components.HSCubeportfolio.init('.cbp'); }); var strGlobal = sessionStorage.getItem("ShowAs"); var cookieconsent = getCookie("etherscan_cookieconsent"); if (cookieconsent !== "True") { document.getElementById("divcookie").style.display = "block"; }; function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1); } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length); } } return ""; } $("#btnCookie").click(function () { $("#divcookie").fadeOut("slow", function () { var d = new Date(); d.setTime(d.getTime() + (1095 * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toUTCString(); document.cookie = "etherscan_cookieconsent=True" + ";" + expires + ";path=/";; }); }); function handleSearchText(data) { searchAddress = false; if ($("txtSearchInput").val() == "") { $("#hdnSearchText").val(""); } } jQuery(document).ready(function () { $.HSCore.components.HSRangeDatepicker.init('.js-range-datepicker'); $.HSCore.components.HSValidation.init('.js-validate'); }); var correctCaptcha = function (response) { //alert(response); }; function get_action(form) { var v = grecaptcha.getResponse(); if (v.length == 0) { console.log("You can't leave captcha code empty"); return false; } else { console.log("Captcha completed"); document.getElementById("responsetext").innerHTML = "
Your download is being processed.
"; document.getElementById("ContentPlaceHolder1_divAlertMsg").style.display = "none"; document.getElementById("ContentPlaceHolder1_btnSubmit").style.display = "none"; document.getElementById("rcaptcha").style.visibility = "hidden"; return true; } }
'''
Context Link
Go1dfish undelete link
unreddit undelete link
Author: mahdiamolimoghadam
1: ether-search-heading:hover 2: ui-menu-item:hover 3: ui-menu-item:hover 4: ui-menu-item:hover
submitted by removalbot to removalbot [link] [comments]

The Pinnacle of Crypto "Journalism" - a PSA

All these crypto news site are reporting that Elon Musk's "Boring Flamethrower" is on sale again, this time accepting crypto as a payment.
However, all these news sites are linking to a phishing link.
The real link is: www.boringcompany.com
However the news sources below are linking to a site called 'TheBoringFlamethrower" which has never been endorsed by Elon Musk's official media channels. Their WHOIS page also brings up different contact information.
Real
Fake
Even though they're both using WHOIS protection, they're both from different registrars with different contact info.
I urge everyone not to click any links until confirmed that they're definitely legitimate.
These sites are spreading misleading info, which may lead to people getting scammed:
EDIT: I have contacted nearly all of the above news site about this and I'll start archiving links.
It's almost as if these sites (or at least some authors) are just re-writing news that other sites post. I didn't see many major sites post this stuff thankfully. I'd rather have a slower-paced news coverage that doesn't post as often but has higher quality, insightful and well-thought-out content.
I encourage writers and readers to constantly fact-check their claims. This could easily have been avoided if the authors simply checked official sources and verified their information.
EDIT 2: Most of the above sites have fixed their error. Unhashed was the first to respond via email:
Hello [redacted],
I'm [redacted], Co-Founder of Unhashed.com.
Thank you for bringing this to our attention.
I've personally updated the article to explain the situation and have also removed the link in question. I've left the original content up for transparency.
I'll also be having a meeting first thing tomorrow to address this issue with our editorial staff to ensure this does not happen again.
Thanks again for bringing this to our attention.
[redacted]
Co-Founder of Unhashed.com
submitted by PrinceKael to CryptoCurrency [link] [comments]

Looking for BCH testnet API

Hi everyone,

I'm trying to find a publicly accessible Bitcoin Cash testnet API that doesn't require an account or at the very least doesn't need my private keys, and supports both address balance lookups and posting of raw transactions. I'm using Bitcoin ABC to support this functionality locally but I also need to be able to do this through a remote RPC API (preferably JSON-based).

Here's a quick rundown of where I've looked so far:

https://rest.bitcoin.com/
This seems like the most obvious option and supports the functionality I'm looking for but it appears that it's only for livenet. For example, here's a testnet address with a little over 0.5 tBCH:
https://explorer.bitcoin.com/tbch/address/n22LEtuzgniSXeMBoUjgpqkDm6Nf7SEMi4
...the API call, however, doesn't like this address:
https://rest.bitcoin.com/v2/address/details/bchtest:qrs0pew4sa7qtdz36jwc5rlwlmsfrlhqxuawvcfxsl
{"error":"Invalid network. Trying to use a testnet address on mainnet, or vice versa."}
Maybe there's another API endpoint I should be using here? Unfortunately I'm not seeing it in the documentation.

https://blockdozer.com/

The API documentation doesn't appear to include posting of transactions, raw or otherwise, and the Broadcast Raw Transaction page appears to be for Bitcoin only.

https://dev.btc.com/docs/js

This API appears to require the BlockTrail SDK and the "Sending Transactions" section seems to indicate that it uses a custodial/shared account model: "The SDK handles all the logic of creating the transaction, signing it with your primary key and sending it to the API so BTC.com can co-sign the transaction and send it to the bitcoin network."
Although I understand that it's not the same thing, to me this isn't too far from requiring my private keys (i.e. it's a loss of signing control).

https://www.bitgo.com/api/v2/

This API supports tBCH but uses hosted wallets (i.e. requires an account and private key[s]).

https://blockchair.com/

The API documentation has a section on broadcasting transactions but only lists bitcoin, bitcoin-cash, ethereum, and litecoin as available chains.

https://docs.cryptoapis.io/

Requires an account (API key) but appears to support the tBCH functionality I'm looking for. It's on the back-burner if I can't find anything else.

https://www.blockchain.com/api/blockchain_wallet_api

It looks like this API requires the developer to create and host a wallet with them in order to send transactions. I'm not sure if I'd have any control over the private key(s) here.

https://bitpay.com/api

Appears to require an account and doesn't appear to fully support the functionality I'm looking for.

If I've missed anything or I'm mistaken about what I've looked into I would very much appreciate your feedback! More importantly, if you know of a service that I haven't listed and that can do what I need it to do I thank you in advance for sharing it.
submitted by monican_agent to Bitcoincash [link] [comments]

INT - The staking, supernoded, IoT king from china that you've never heard of.

If you would prefer to read this on Medium, you can here.
.
.
It wasn't too long ago when I came across Polkadot, a new framework for blockchain 3.0 that aims to solve most of the issues that plagues the first two generations of blockchain. I was completely taken aback by the simplicity and elegance of the framework and the solutions it proposed.
.
If you have the time, I would HIGHLY recommend reading the Polkadot whitepaper for an in-depth explanation of the reasoning behind this structure. It's fantastically done.
.
Polkadot was founded by Dr. Gavin Wood, the same Gavin Wood who founded Ethereum with Vitalik and wrote Solidity, Ethereum’s smart contract language and the basis of the Ethereum Virtual Machine. He started the Polkadot project in an effort to solve the core issues we see in blockchain today, namely the scalability, speaking not just for transaction volume but the resources involved in processing them, and the isolation of blockchains from other networks.
.
Ultimately, the above issues that are present in the blockchains we see today are caused by having single layer blockchains with one-dimensional scaling (block size and block time), with a generalized group of rules that applies globally within that network that eventually leads to an inability to innovate, adapt and perform at scale. These single chain networks like Bitcoin and Ethereum began knowing they would have to implement a new technology or second layer solution (like Lightning) in order to operate properly at scale.
.
In the traditional framework, transactions have to be processed one by one by each node, checking for validity, batched into a block, hashed and (in a competition to get there first) added to the blockchain. The whole process can be broken down into two parts, the verifying of transactions and the block generation. The block generation portion of this is called the State Transition mechanism, where the ‘state’ of the blockchain is just ‘who owns what’. This consensus architecture is mainly limited by the need to have wide timing margins to allow for the expected processing time for doing these operations. This applies to both PoW and PoS mechanisms.
.
The way Polkadot proposes the solution to this is to create a network of subchains running in parallel and to separate the validators from the state transition mechanism, leaving the subchain nodes to only make sure the transactions are valid and leaving the parent chain to take the computational load as block generator, in a two-tier DPoS architecture.
.
To illustrate, imagine having to run down a path collecting balls on either side of that path and every 10 feet you stop at a station, count, weigh and measure the size of those balls, then package them all up into a box before continuing to run down that path to collect more balls. You are limited in this case by the length of time it takes you to organize, characterize and package those balls. This is the current case of single chain PoW/PoS chains where the full nodes do the validating and block generation work. Whereas, in the proposed multi-chain framework, you run down that same path, collecting balls and every 10 feet you just place the box at the station and keep going, there is another person (node) there to do the packaging, this system is limited only by how fast you can collect those balls.
.
Current real-world blockchain networks are limited to about 30 transactions per second whereas, in Polkadot’s testing, this framework allowed a transaction throughput of around 1000 TPS on each subchain, with the ability to infinitely scale by the addition of subchains in the network.
.
The added beauty in this is that it also allows each one of these subchains to define their own rule sets that best suit the use case. You can successfully have a network of subchains, one with smart contracts, one with fast and free transactions, one with private transactions, one a state-less data transaction chain, all able to communicate with each other, creating a blockchain of blockchains.
.
It is important to note here that in this framework, the parent chain acts only as a relay and block generator for each subchain. It has no inherent application. The relay chain is simply provides the base from which a large number of validatable, dynamic data structures can be hosted side by side. In Polkadot, they call these data structures, parallel subchains or ‘parachains’, although there is no need for them to be blockchains at all. They could be a set of independent chains like Bitcoin or Ethereum, or different networks all together like the Internet or a private banking network, with the added and very important functionality of trustlessly transacting between those networks.
.
The simplicity of this relay chain makes it easier to maintain with less things to go wrong and easier to upgrade without the need for hardforks or concern with backwards compatibility.
.
What does this afford us? A network that can have an array of different blockchains, each with their own specific purpose, working in perfect concert with one another. A future-proof framework able to integrate new blockchain technology as it becomes available without over-complicated coordination or hardforks.
.
Polkadot is aiming to use this framework to tackle a more generalized application of linking existing blockchains, outside networks (Internet, banking networks) and being Ethereum 3.0, allowing people to not only generate their own tokens but also their own blockchains; what they call Web3. While I thought this was a fantastic application and exactly what the crypto ecosystem needs, I was curious to see what other projects were using the same revolutionary framework and therefore, we're the next generation of blockchain.
.
IoT was immediately what came to mind. An ecosystem with a wide variety of possible transaction types, device types and the potential for an enormous scaling need. It is not difficult to imagine a scenario where the one size fits all approach or any current or planned version of Ethereum does not satisfy the needs of an IoT ecosystem. Imagine the network needs of a weather sensor, sending lightweight data every few seconds where fast block times needed, a smart car sending and receiving location and traffic data where larger data set communication efficiency is paramount, a smart home hub which controls everything in your house where smart contracts and artificial intelligence is needed, your smartphone selling your private data for ad revenue where strong encryption is vital and the ability to transact privately with a fungible currency all in the same network, tied together. The IoT ecosystem needs the ability to handle all scenarios and there is not one, single chain network that can fit the needs of that ecosystem.
.
.
.
That’s when I came across INT’s whitepaper titled, “An economy driven solution to improve the device interconnection of Internet of Things”. It outlined the issues we currently see with blockchain as well as what the future needs will be in order to support the needs of a global Internet of Things ecosystem. What caught me was the down to earth understanding of the needs and hurdles without any of the overbearing hype. It is a straight forward evaluation of current state, future state needs, their proposals to solve those issues and the technical details thereof. It speaks of Polkadot as the framework, with Tendermint and HoneyBadgerBFT as the basis of their two-tier consensus mechanism, data and user privacy at the forefront with a team of industry experts leading it.
.
This framework allows for infinite scaling by the addition of subchains and custom functionality in those subchains that allows them to be defined for the particular application, be it private transactions, state transaction free data chain, smart contracts, etc. It easily accommodates interoperability between established networks like the Internet and enables pegging with other blockchains with a few simple transaction type inclusions. With this cross chain communication, manufactures wouldn’t have to negotiate their needs to fit an established blockchain, they could create their own subchain to fit their needs and interact with the greater network through the relay.
.
By splitting the consensus mechanism, you effectively have two tires of nodes, one at the subchain level verifying transactions, passing them up to the supernodes which further verify by DPoS and create the block. Their whitepaper says the coin will be two tiered like with the primary INT token like a share of the blockchain, much like Neo. They also recently mentioned they plan to use the EOS supernode structure which selects the block producer based on an election mechanism. In these DPoS schemes, in order to encourage participation in the network and in voting, users who vote get part of the node reward proportional to the amount of coins staked. This means that there will be a block reward for anyone that holds coins and votes or maintains a node. (Current node staking requirements are not known.)
.
The team understands the development hurdles facing the interaction of many different devices from many different manufacturers. They plan to solve this by standardizing requirements for communication and data exchange. They have heavy ties with several manufacturers and are currently developing an IoT router (with a yet to be confirmed telecom manufacturer) to be the gateway to the network.
.
INT recognizes the strong need for an IoT network to have robust and efficient data handling and storage. They are utilizing a decentralize storage system using distributed hash tables (DHT) much like the BitTorrent system. These are used as lookup tables for key pairs so that nodes can efficiently retrieve values associated with a given key. This can be used to maintain a list of node addresses and public keys (miner nodes, super nodes, Meta nodes), IoT devices and their associated keys as well as distributed file systems and peer to peer information sharing. This will be the keystone of the node network and IoT device information transfer. This combined with the network implementation of all of the communication protocols (TCP/IP, UDP/IP, MANET) build the framework of a network that will effortlessly integrate any device type for any application in any network condition.
.
(If you are interested in understanding these protocols further and what application they would have, see the linked post.)
.
In order to protect the user and their data, they are implementing their own innovative Behavior Private Key (BPK) algorithm which is based on zero-knowledge proofs. This will pass the user’s intent on to the nodes and other device hardware, without identifying who sent the request. This will also protect users from behavior analysis in pseudo-anonymous systems like Bitcoin, where tracing transactions and behavior and correlating it to known, non-private information can lead to identification of the user.
.
INT mentioned that the system will use machine learning to model strategies and clustering behavior, to group requests to further hide users. I am not sure exactly how this will be implemented but it sounds like it could be akin to Monero’s ring signature system of having a group of users sign a transaction but only one of the group is the actual user sending the transaction. Therefore the true user’s signature is hidden and neither the node nor the receiver knows who sent the transaction.
.
They also talk about developing a network of DAPPs automatically running on IoT devices and the network enabled by smart contracts to automatically exchange data and transactions between humans and machines.
.
Reading between the hints, this is the second time that INT has hinted at modeling and learning capabilities within the network. What capabilities will this learning system have? Does this intelligent learning system, combined with your BPK create a private profile accessible by your private key?
.
So what do we have? A project based on Polkadot enabling endless scaling and unlimited applicability in a network that uses staking and supernodes from a Chinese project partnering with manufactures and telecom equipment companies that has tokens only traded on two exchanges with main net coming in the near future. They set out to accomplish more than WTC or VEN in a network that is better equipped than IOTA or Ethereum. If they can execute on what they have laid out, there is no reason that they won’t become the market leader, easily overtaking the market cap of VeChain ($2.5B, $10 INT) in the short term and IOTA ($7B, $28 INT) in the medium term. Sounds like an IoT sleeping giant.
.
.
.
If you are curious to see how INT stacks up against other IoT projects, take a look at this breakdown.
.
.
.
For the curious, Polkadot ICO prices put them at a market cap of $350M, close to that of Waltonchain and would yield an INT price of $1.40.
submitted by Graytrain to CryptoCurrency [link] [comments]

#For Review: 'Intrinsically Tradable Tokens' (ITT's) are their own exchange

For Review: 'Intrinsically Tradable Tokens' (ITT's) are their own exchange

Introducing Intrinsically Tradable Tokens, ERC20 compliant tokens in which you can buy and sell directly from the contract.
Ropsten 0xa9e001bebe4b281f7229b0305f553ab3c511fef5
Live 0xa15c784319fa96d3E36cFE97fbadD89Ec704A8dc

ITT's extend the ERC20 API with:

buy(uint price, uint amount, bool make) sell(uint price, uint amount, bool make) cancel(uint price) withdraw(uint ether) 
and other ancillary exchange state getters (see Github repo for full API) such as :
etherBalanceOf(address holder) getBook() getOrdersOf(address trader) spread(bool side) 
The intrinsic exchange functionality works on a FIFO matching maketaker algorithm. A new order may be iteratively filled by multiple make orders on the book or if unfilled, can be put on the book itself as a make order.
ITT demo contracts have been deployed on the Ropsten test chain on which a number of Buy and Sell orders have already been placed for you to play with. The demo ITT and future, more functional ITT's can be can be interacted with using the front end DAPP ITTDesk.

Use Cases

This demo ITT serves to demonstrate the exchange functionality of a basic ITT contract and does not have much intrinsic value in the token itself beyond being a purely speculative coin.
The ITT API and base contract are open source and offered to the community in order to extend or attach value adding functionality to the token side.
As is, crowd funding and token sales become as trivial by simply placing ask orders (see Self Funding below).
Better still would be to extended ITT functionality to make a 'Payable ITT' which becomes a simple but highly versatile pay to an unknown many mechanism which can distribute payments according to proportional holdings. Such holdings might represent shareholders, a rewards system or perhaps be used to fund and manage a DAO's project funds. (I do have a Payable ITT but will not likely release it until the community has confidence in the basic ITT contract)
Other value adding developments might be to couple ITT's to fiat currencies for truly low friction decentralised forex.

Current State of Development

As deployed, the ITT Demo contract is yet to undergo extensive testing and formal verification. It appears to work as intended (unless compiled with 0.4.5+commit.b318366e! My first launch attempt drove me crazy until that bug was announced). The contract on both chains have been verified on etherscan.io etherscan.io.
The ITTDesk app is very much in alpha release, minimalist and clunky in it's function. It is written on Meteor and attempts to use Mist styling and elements. Probably best just to clone the repo and run it up in Meteor at this stage. It features intelligent ask/bid/buy/sell trade buttons to assisting in validating user inputs in the order fields.
I am not an experienced web developer, so feed back, suggestions, criticisms are most welcome. In particular, I've not been able to work up the filters without causing browser timeout.

How does it work?

The order book utilises a mapping of 'Circular Linked Lists (CLL)' from the LibCLLi library to order and lookup the booked prices and iterate the FIFO's at each price. Each FIFO in the mapping is keyed by its price and holds all the addresses of traders who have made orders at that price. A trader can only have a single order at any particular price. An attempt to book another order at the same price will adjust and put the order at the back of the FIFO queue. This prevents FIFO hogging in which a trader might otherwise starve other orders by continually topping up their own.
A second trivial mapping holds the actual order amounts. It is keyed by a SHA3 hash of the trader's address with the price of the order (and is actually what limits the trader to one price, one order).
The CLL's heads are static at mapping key '0'. To use as a FIFO, nodes are simply inserted previous to the head and removed from next to the head. A FILO (stack) can be implemented with equal simplicity.
In the case of the price list, the links either side of the head are the highestBid (previous) and lowestAsk (next) making the head node itself the market spread. The price list is artificially bound to minimum (uint 1) and maximum (uint 2**128) prices. New price nodes are inserted relative to the head (spread) after iterating through an order search.
Looping operations in Smart Contracts can be bug prone and costly, especially with state mutations in each loop as in the ITT's matching algorithm. For this reason, the order matching loop is dynamically limited by the gas supply from msg.gas and will exit with a partially filled order rather than throw it. The remainder does not get put on the book as a make order as it would cause a bid/ask collision at that price. Because of this looping, gas cannot be estimated and it is up to the trader to consider the costs and adjust the amount of gas prior to ordering.
The matching algorithm is not without architectural efficiency however which almost halves the number to calls to STORE by virtualising (caching to memory) the taker's state variables prior to the matching loop and writing back to store once the matching and making operations exit.

Security and Resilience

ITT's hold ether balances and therefore are presumed to be targeted by hacking attempts. A number of security features and practices have therefore been programmed into the contract.
All external or payable state mutating functions are 'reentry protected' by a mutex which is set and cleared in the internal function safeSend(), which is called only by the public function withdraw(). This practice ensures a single entry and exit.
The architecture also separates entry validation logic and parameter preparation which is kept in the external/payable functions, from state mutation logic which is kept in the internal functions. This allows for a secure, flexible, inheritable API/interface layer from which to extend the contract while keeping the basic ITT internal functionality the same.
In the ITT Demo, the default function is unimplemented and therefore throws if payments are sent to anything other than the payable buy() function.
Attention must also be drawn to some rather unconventional use of uint math in the matching loop. Elsewhere, the contract uses explicitly safe maths functions, however the nature of an exchange function requires numerous inverse and signed integer operations. It was found that casting between int and uint became an onerous task with potentially unpredictable outcome and a design decision was made to simply treat uint as signed within the matching loop. In this case -1 == 2**256-1 and is used in multiplication to change the sign of trade amounts during matching.
In light of the signed uint adoption, a further mathematical constraint was placed on the maximum price and amount allowed being 2**128 which prevents any multiplication overflows.

Testing

Given that this contract is Proof of Concept deployment primarily for public review, it should be considered insecure. It has been tested for functionality but no exhaustive testing regime or formal verification has been put against it. It is undeniably a big ugly contract with complex logic and so should be viewed with suspicion.
Interacting with the Live contract is thereby at your own risk!

Self Funding

Being the deploying owner of this Demo ITT, I am granted the full balance of tokens and have placed both ask and bid orders as examples. Purchasing my Ask orders on the Live chain does transfer real ether to my balance and so I am trailing this as a channel for funding my development efforts rather than chasing bounties, competitions, donations, (a real job) or what have you. If you buy tokens here, you could consider it as a much appreciated donation which you might also be able to return a speculative profit from! It would certainly make my life easier. :)

Who Am I?

My name is Darryl Morris AKA o0ragman0o. I'm an independent (and some what isolated) Australian Ethereum developer. Though fairly quite, I've been following Ethereum developments since November 2014 (PoC 6) and have been small time mining since Olympic, though not now with expensive Australian electricity. I am best known on [forum.ethereum.org](forum.ethereum.org) where I am a mod. I've been crypto aware since 2009 when I tried bitcoin in it's infancy. I got 71/70 marks for Griff Green's notorious 'DAO Ninja' homework though obviously needed 72 to recognise the complex of vulnerabilities in that code!
My interests are in developing delegative democracy technologies with which to render all politicians obsolete (particularly ones beginning with 'T'). To that end I've developed the ITT contract as a funding component of a democracy DAO framework I call 'Ethenian DAO'.
Looking for interested collaborators.
Cheers Darryl
submitted by o0ragman0o to ethereum [link] [comments]

Rethinking Large-Scale Consensus

Cryptology ePrint Archive: Report 2018/302
Date: 2018-03-29
Author(s): Rafael Pass, Elaine Shi

Link to Paper


Abstract
In this position paper, we initiate a systematic treatment of reaching consensus in a permissionless network. We prove several simple but hopefully insightful lower bounds that demonstrate exactly why reaching consensus in a permissionless setting is fundamentally more difficult than the classical, permissioned setting. We then present a simplified proof of Nakamoto's blockchain which we recommend for pedagogical purposes. Finally, we survey recent results including how to avoid well-known painpoints in permissionless consensus, and how to apply core ideas behind blockchains to solve consensus in the classical, permissioned setting and meanwhile achieve new properties that are not attained by classical approaches.

References
[1] http://www.btproof.site/.
[2] Lightning network. https://lightning.network/.
[3] Marcin Andrychowicz and Stefan Dziembowski. Pow-based distributed cryptography with no trusted setup. In CRYPTO, pages 379–399, 2015.
[4] Hagit Attiya, Cynthia Dwork, Nancy Lynch, and Larry Stockmeyer. Bounds on the time to reach agreement in the presence of timing uncertainty. J. ACM, 41(1):122–152, 1994.
[5] Simon Barber, Xavier Boyen, Elaine Shi, and Ersin Uzun. Bitter to betterhow to make bitcoin a better currency. In Financial cryptography and data security, pages 399–414. Springer, 2012.
[6] Iddo Bentov and Ranjit Kumaresan. How to Use Bitcoin to Design Fair Protocols. In CRYPTO, 2014.
[7] Miguel Castro and Barbara Liskov. Practical byzantine fault tolerance. In OSDI, 1999.
[8] T-H. Hubert Chan, Naomi Ephraim, Antonio Marcedone, Andrew Morgan, Rafael Pass, and Elaine Shi. Blockchain with varying number of players. Manuscript, 2017.
[9] Jing Chen and Silvio Micali. Algorand: The efficient and democratic ledger. https://arxiv.org/abs/1607.01341, 2016.
[10] Sophia Yakoubov Conner Fromknecht, Dragos Velicanu. A decentralized public key infrastructure with identity retention. Cryptology ePrint Archive, Report 2014/803, 2014. http://eprint.iacr.org/2014/803.
[11] Kyle Croman, Christian Decker, Ittay Eyal, Adem Efe Gencer, Ari Juels, Ahmed Kosba, Andrew Miller, Prateek Saxena, Elaine Shi, Emin Gun Sirer, Dawn Song, and Roger Wattenhofer. On scaling decentralized blockchains (a position paper). In Bitcoin Workshop, 2016.
[12] Phil Daian, Rafael Pass, and Elaine Shi. Snow white: Robustly reconfigurable consensus and applications to provably secure proofs of stake. Cryptology ePrint Archive, Report 2016/919, 2016.
[13] Danny Dolev and H. Raymond Strong. Authenticated algorithms for byzantine agreement. Siam Journal on Computing - SIAMCOMP, 12(4):656–666, 1983.
[14] Cynthia Dwork, Nancy Lynch, and Larry Stockmeyer. Consensus in the presence of partial synchrony. J. ACM, 1988.
[15] Cynthia Dwork and Moni Naor. Pricing via processing or combatting junk mail. In CRYPTO, 1992.
[16] Ittay Eyal and Emin Gun Sirer. Majority is not enough: Bitcoin mining is vulnerable. In FC, 2014.
[17] Michael J. Fischer, Nancy A. Lynch, and Michael Merritt. Easy impossibility proofs for distributed consensus problems. In PODC, 1985.
[18] Juan A. Garay, Aggelos Kiayias, and Nikos Leonardos. The bitcoin backbone protocol with chains of variable difficulty. Cryptology ePrint Archive, 2016/1048.
[19] Juan A. Garay, Aggelos Kiayias, and Nikos Leonardos. The bitcoin backbone protocol: Analysis and applications. In Eurocrypt, 2015.
[20] Jonathan Katz, Andrew Miller, and Elaine Shi. Pseudonymous secure computation from timelock puzzles. IACR Cryptology ePrint Archive, 2014:857, 2014.
[21] Aggelos Kiayias, Alexander Russell, Bernardo David, and Roman Oliynykov. Ouroboros: A provably secure proof-of-stake blockchain protocol. In Crypto, 2017.
[22] Leslie Lamport. The weak byzantine generals problem. J. ACM, 30(3):668–676, 1983.
[23] Leslie Lamport. Fast paxos. Distributed Computing, 19(2):79–103, 2006.
[24] Litecoin - Open source P2P digital currency. http://litecoin.org/.
[25] Andreas Loibl. Namecoin. namecoin.info, 2014.
[26] Satoshi Nakamoto. Bitcoin: A peer-to-peer electronic cash system. 2008.
[27] Rafael Pass and abhi shelat. Micropayments for peer-to-peer currencies. In ACM CCS, 2015.
[28] Rafael Pass, Lior Seeman, and Abhi Shelat. Analysis of the blockchain protocol in asynchronous networks. In Eurocrypt, 2017.
[29] Rafael Pass and Elaine Shi. Fruitchains: A fair blockchain. In PODC, 2017.
[30] Rafael Pass and Elaine Shi. Hybrid consensus: Efficient consensus in the permissionless model. In DISC, 2017.
[31] Rafael Pass and Elaine Shi. The sleepy model of consensus. In Asiacrypt, 2017.
[32] Rafael Pass and Elaine Shi. Thunderella: Blockchains with optimistic instant confirmation. In Eurocrypt, 2018.
[33] Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, and Scott Shenker. A scalable content-addressable network. SIGCOMM Comput. Commun. Rev., 31(4):161–172, August 2001.
[34] Antony Rowstron and Peter Druschel. Pastry: Scalable, decentralized object location, and routing for large-scale peer-to-peer systems. In Middleware, pages 329–350, 2001.
[35] Yonatan Sompolinsky and Aviv Zohar. Secure high-rate transaction processing in bitcoin. In Financial Cryptography, 2015.
[36] Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan. Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications. In SIGCOMM, 2001.
[37] Gavin Wood. Ethereum: A secure decentralized transaction ledger. http://gavwood.com/paper.pdf, 2014.
submitted by dj-gutz to myrXiv [link] [comments]

Serialization: Qtum Quantum Chain Design Document (6): x86 Virtual Machines Reshaping Smart Contract Ecosystem

Qtum Original Design Document Summary (6) -- Qtum x86 Virtual Machine

https://mp.weixin.qq.com/s/0pXoUjXZnqJaAdM4vywvlA
As we mentioned in the previous chapters, Qtum uses a layered design, using Qtum AAL, so that the Ethereum virtual machine EVM can run on the underlying UTXO model to be compatible with Ethereum's smart contracts. However, EVM itself has many limitations, and is currently only compatible with a high-level language such as Solidity for smart contract writing. Its security and maturity still require time verification. The Qtum AAL was designed to be compatible with multiple virtual machines at the beginning of the design, so after the initial compatibility with the EVM, the Qtum team was committed to compatibility with the more mainstream architecture of the virtual machine, which in turn was compatible with mainstream programming languages and toolchains.
The Qtum x86 virtual machine is the development focus of the Qtum project in 2018. It aims to create a virtual machine compatible with the x86 instruction set and provide similar operating system level calls, aiming to push smart contract development into the mainstream.
The following section intercepted some of the original Qtum development team's original design documents for the Qtum x86 virtual machine (with Chinese translation) (ps: document QTUM <#> or QTUMCORE<#> for internal design document numbering):
 
QTUMCORE-103:[x86lib] Add some missing primary opcodes
Description:There are several missing opcodes in the x86 VM right now. For this story, complete the following normal opcodes (it should just be a lot of connecting code, nothing too intense)
//op(0x9C, op_pushf);
//op(0x9D, op_popf);
//op(0xC0, op_group_C0); //186
// C0 group: _rm8_imm8; rol, ror, rcl, rcr, shl/sal, shr, sal/shl, sar
//op(0xC1, op_group_C1); //186
// C1 group: _rmW_imm8; rol, ror, rcl, rcr, shl/sal, shr, sal/shl, sar
Notes:
• Make sure to look at existing examples of similar code in the VM code.
• Look at the x86 design document references for some good descriptions of each opcode
• Ask earlz directly about any questions
• At the top of opcode_def.h there is a big comment block explaining the opcode function name standard and what things like "rW" mean
• Implement the first opcode listed and then have earlz review to make sure things looks correct
Task: [x86lib] add some missing main operation code
Description: Some opcodes are currently missing from x86 virtual machines. In this task, complete the following standard opcode (should only be some connection code, not too tight)
//op(0x9C, op_pushf);
//op(0x9D, op_popf);
//op(0xC0, op_group_C0); //186
// C0 group: _rm8_imm8; rol, ror, rcl, rcr, shl/sal, shr, sal/shl, sar
//op(0xC1, op_group_C1); //186
// C1 group: _rmW_imm8; rol, ror, rcl, rcr, shl/sal, shr, sal/shl, sar
note:
• Make sure to see existing similar code examples in VM (virtual machine) code
• View x86 design documents to better understand each opcode
• Ask any question directly to Earlz
• At the top of opcode_def.h, there is a large section of comments explaining the opcode function name criteria and the meaning of keywords such as "rW"
• Implement the first opcode listed, and then let Earlz check to make sure the code looks correct.
QTUMCORE-106: [x86lib] Add some more missing primary opcodes
Description: There are a few missing opcodes in the x86 VM right now. For this story, complete the following normal opcodes (it should just be a lot of connecting code, nothing too intense)
//op(0x60, op_pushaW); //186
//op(0x61, op_popaW); //186
//op(0x6C, op_insb_m8_dx); //186
//op(0x6D, op_insW_mW_dx); //186
//op(0x6E, op_outsb_dx_m8); //186
//op(0x6F, op_outsW_dx_mW); //186
Notes:
• Make sure to look at existing examples of similar code in the VM code.
• Look at the x86 design document references for some good descriptions of each opcode
• Ask earlz directly about any questions
• At the top of opcode_def.h there is a big comment block explaining the opcode function name standard and what things like "rW" mean
• Implement the first opcode listed and then have earlz review to make sure things looks correct
Task: [x86lib] add some missing main operation code
Description: Some opcodes are currently missing from the x86 virtual machine. In this task, complete the following standard opcode (should only be some connection code, not too tight)
//op(0x60, op_pushaW); //186
//op(0x61, op_popaW); //186
//op(0x6C, op_insb_m8_dx); //186
//op(0x6D, op_insW_mW_dx); //186
//op(0x6E, op_outsb_dx_m8); //186
//op(0x6F, op_outsW_dx_mW); //186
note:
• Make sure to see existing similar code examples in VM (virtual machine) code
• View x86 design documents to better understand each opcode
• Ask any question directly to Earlz
• At the top of opcode_def.h, there is a large section of comments explaining the opcode function name criteria and the meaning of keywords such as "rW"
• Implement the first opcode listed, and then let Earlz check to make sure the code looks correct.
QTUMCORE-104: [x86lib] Add some missing extended opcodes
Description: There are several missing opcodes in the x86 VM right now. For this story, complete the following extended (0x0F prefix) opcodes (it should just be a lot of connecting code, nothing too intense)
Opx(0xA0, op_push_fs); //386
Opx(0xA1, op_pop_fs); // 386
Opx(0xA8, op_push_gs); //386
Opx(0xA9, op_pop_gs); //386
Opx(0xAF, op_imul_rW_rmW); //386
Opx(0xB0, op_cmpxchg_rm8_al_r8); //48
Opx(0xB1, op_cmpxchg_rmW_axW_rW); //486
For(int i=0;i<8;i++)
{opx(0xC8 + i, op_bswap_rW); }
Notes:
• Make sure to look at existing examples of similar code in the VM code.
• Look at the x86 design document references for some good descriptions of each opcode
• Ask earlz directly about any questions
• At the top of opcode_def.h there is a big comment block explaining the opcode function name standard and what things like "rW" mean
• Implement the first opcode listed and then have earlz review to make sure things looks correct
Task: [x86lib] Adding Some Missing Extended Opcodes
Description: Some opcodes are currently missing from the x86 virtual machine. In this task, complete the following extension (0x0F prefix) opcode (should be just some connection code, not too tight)
Opx(0xA0, op_push_fs); //386
Opx(0xA1, op_pop_fs); // 386
Opx(0xA8, op_push_gs); //386
Opx(0xA9, op_pop_gs); //386
Opx(0xAF, op_imul_rW_rmW); //386
Opx(0xB0, op_cmpxchg_rm8_al_r8); //48
Opx(0xB1, op_cmpxchg_rmW_axW_rW); //486
For(int i=0;i<8;i++)
{opx(0xC8 + i, op_bswap_rW); }
note:
• Make sure to see the existing similar code example in the virtual machine code
• View x86 design documents to better understand each opcode
• Ask any question directly to Earlz
• At the top of opcode_def.h, there is a large section of comments explaining the opcode function name criteria and the meaning of keywords such as "rW"
• Implement the first opcode listed, and then let Earlz check to make sure the code looks correct.
The above series of tasks implements most of the necessary opcodes for the x86 lib kernel part (x86lib). These are the basics for the virtual machine to recognize and run x86 instructions and function as an emulator for x86 instructions.
QTUMCORE-105: [x86lib] Research how to do automated testing for x86lib
Description: Research and look for viable ways to do automated testing of x86lib's supported opcodes
Task: How to Automatically Test x86lib
Description: Study and find possible ways to automate x86lib supported opcodes
The Qtum team achieved automated testing of the x86 virtual machine kernel through the above tasks, because the parsing and running errors of the underlying instructions are often difficult to find through debugging, and must use some automated testing tools. This ensures the correctness of the x86lib kernel.
QTUMCORE-109:[x86] Add "reason" field for all memory requests
Description: In order to prepare for the upcoming gas model, a new field needs to be added to every memory access. This field basically gives the reason for why memory is being accessed so that it can be given a proper gas cost. Possible reasons:
Code fetching (used for opcode reading, ModRM parsing, immediate arguments, etc)
Data (used for any memory reference in the program, such as mov [1234], eax. also includes things like ModRM::WriteWord() etc)
Internal (used fro any internal memory reading that shouldn't be given a price.. probably not used right now outside of testbench/testsuite code)
This "reason" code can be place in MemorySystem(). It shouldn't go in each individual MemoryDevice object
Task: [x86] Add "reason" field to all memory requests
Description: In preparation for the gas model to be used, a new field needs to be added to each memory access. This field basically gives the reason why the memory was accessed so that the appropriate gas cost can be given.
Possible reasons are:
• Capture code (for opcode reads, ModRMB parsing, instant parameters, etc.)
• Data (used for memory references in programs such as mov[1234], eax, and operations similar to ModRM::WriteWord(), etc.)
Internal request (for any internal memory read that does not need to consume gas... currently only used in testbench/testsuite code)
The "reason" code can be placed in MemorySystem(). It should not be placed in any single MemoryDevice object.
The above task is mainly aimed at the Qtum x86 new gas model, and separate fields are reserved for different types of memory access requests. Currently only used to verify the feasibility, in the future will be used to calculate the actual gas price.
QTUMCORE-114: [x86] Add various i386+ instructions
Description: Implement (with unit tests for behavior) the following opcodes and groups:
//op(0x62, op_bound_rW_mW); //186
//op(0x64, op_pre_fs_override); //386
//op(0x65, op_pre_gs_override); //386
// op(0x69, op_imul_rW_rmW_immW); //186 (note: uses /r for rW)
// op(0x6B, op_imul_rW_rmW_imm8); //186 (note: uses /r for rW, imm8 is sign extended)
//op(0x82, op_group_82); //rm8, imm8 - add, or, adc, sbb, and, sub, xor, cmp
Task:[x86]Add various i386+ instructions
Description: Implement (and unit test) the following opcodes and groups:
//op(0x62, op_bound_rW_mW); //186
//op(0x64, op_pre_fs_override); //386
//op(0x65, op_pre_gs_override); //386
// op(0x69, op_imul_rW_rmW_immW); //186 (note: uses /r for rW)
// op(0x6B, op_imul_rW_rmW_imm8); //186 (note: uses /r for rW, imm8 is sign extended)
//op(0x82, op_group_82); //rm8, imm8 - add, or, adc, sbb, and, sub, xor, cmp
QTUMCORE-115: [x86] Implementer more i386+ opcodes
Description: Implement with unit tests the following opcodes:
(notice opx is extended opcode)
//op(0xC8, op_enter); //186
For(int i=0;i<16;i++)
{opx(0x80+i, op_jcc_relW); //386 opx(0x90+i, op_setcc_rm8); //386 }
Opx(0x02, op_lar_rW_rmW);
Opx(0x03, op_lsl_rW_rmW);
Opx(0x0B, op_unknown); //UD2 official unsupported opcode
Opx(0x0D, op_nop_rmW); //nop, but needs a ModRM byte for proper parsing
Opx(0xA0, op_push_fs); //386
Opx(0xA1, op_pop_fs); // 386
Opx(0xA2, op_cpuid); //486
Opx(0xA3, op_bt_rmW_rW); //386
Opx(0xA4, op_shld_rmW_rW_imm8); //386
Opx(0xA5, op_shld_rmW_rW_cl); //386
Opx(0xA8, op_push_gs); //386
Opx(0xA9, op_pop_gs); //386
Opx(0xAA, op_rsm); //386
Opx(0xAB, op_bts_rmW_rW); //386
Opx(0xAC, op_shrd_rmW_rW_imm8); //386
Opx(0xAD, op_shrd_rmW_rW_cl); //386
Make sure to remove these opcodes from the commented todo list as they are implemented
Task: [x86] Implement More i386+ Instructions
Description: Implements the following opcodes and unit tests:
(Note that opx is an extended opcode)
//op(0xC8, op_enter); //186
For(int i=0;i<16;i++)
{opx(0x80+i, op_jcc_relW); //386 opx(0x90+i, op_setcc_rm8); //386 }
Opx(0x02, op_lar_rW_rmW);
Opx(0x03, op_lsl_rW_rmW);
Opx(0x0B, op_unknown); / / UD2 official unsupported opcode
Opx(0x0D, op_nop_rmW); //nop, but requires a ModRM byte for proper parsing
Opx(0xA0, op_push_fs); //386
Opx(0xA1, op_pop_fs); // 386
Opx(0xA2, op_cpuid); //486
Opx(0xA3, op_bt_rmW_rW); //386
Opx(0xA4, op_shld_rmW_rW_imm8); //386
Opx(0xA5, op_shld_rmW_rW_cl); //386
Opx(0xA8, op_push_gs); //386
Opx(0xA9, op_pop_gs); //386
Opx(0xAA, op_rsm); //386
Opx(0xAB, op_bts_rmW_rW); //386
Opx(0xAC, op_shrd_rmW_rW_imm8); //386
Opx(0xAD, op_shrd_rmW_rW_cl); //386
After these opcodes are implemented, make sure to remove them from the commented TODO list.
QTUMCORE-118: Implement remaining opcodes in x86lib
Description: The remaining opcodes that do not result in an error or change of behavior should be implemented with unit tests. Take particular care and use many references for some of the weird opcodes, like nop_rm32.
Task: Implementing remaining x86lib opcodes
Description: The remaining opcodes that do not cause errors or behavior changes should be implemented through unit tests. Take special care and refer to some weird opcodes, such as nop_rm32.
The above series of tasks further adds support for i386+ opcodes and implements the rest of the necessary remaining opcodes. At this point x86lib can already support most i386+ instructions
QTUMCORE-117: Begin leveldb-backed database for x86 contracts
Description: For this story, the code work should done as a sub-project from Qtum Core, and can be done direclty in the Qtum Core github. For now, unit and integration tests should be used to confirm functionality. It will be integrated into Qtum Core later. You might need to modify Qtum Core some so that the project is built with proper dependencies. This story will implement the beginnings of a new database that will be used for smart contracts. This will only store meta-data, contract Bytecode, and constructor data for right now:
The leveldb dataset for this data should be named "contracts". The key for this dataset should be a 256-bit contract address (exact format will be specified later) awarded as a hex string.
The value data should contain the following:
• txid of contract creation (with this the chainstate db can be used to lookup blockhash)
• VM version
• contract creation parameters (see "contract deployment" page in design)
• contract creation data (the constructor data)
• contract bytecode
The interface for reading and writing into this database should be clear and extensible. Although it is being designed for the x86 VM, other VMs in the future will also use it.
Task: Implementing a leveldb database in an x86 contract
Description: For this task, code should be written in the Qtum Core subproject and can be done directly on the Qtum Core github. Currently, unit tests and integration tests should be used to confirm the correctness of the function. The following code will be integrated into Qtum Core. It may be necessary to modify the Qtum Core appropriately so that the project has the appropriate dependencies. This task will implement a prototype of a new database that can be used for smart contracts. This database currently only stores meta-data, contract bytecode, and constructor data.
The data leveldb data set should be named "contract." The key of the data set should be the contract address of a 256-digit hexadecimal string (the specific format will be specified later).
Value data should contain the following sections:
• Contract created transaction id (chain state database can use it to find block hash)
• Virtual Machine Version
• Contract creation parameters (see "Contract Deployment" page in the design)
• Contract creation data (constructor data)
• Contract bytecode
The interface for database reads and writes should be clear and extensible. Although designed for x86 virtual machines, other virtual machines can be used in the future.
The above task implements the most basic leveldb database available for x86 contracts. Currently, this database only stores some specific data such as contract codes, which can be expanded in the future. In addition, the design emphasizes the universality of the interface and facilitates the invocation of other virtual machines in the future.
QTUMCORE-119: Research needed functions in Qtum's version of libc
Description: We should evaluate the C99 standard library specifications to determine which functions should be supported in the x86 VM, with easy to use tooling provided to developers (ie, a custom toolchain). List the headers and functions that are common enough to warrant support , as well as is agnostic to the operating system, or can some way fit into the operating system like model of Qtum's x86 VM.
Task: To study the functions required in the libc version of Qtum
Description: We should evaluate the C99 standard library specification to determine which features should be supported in the x86 virtual machine and make it easier to use the tools provided to the developer (for example, a customized tool chain). Lists the most common function headers and functions that must be supported. These function headers and functions are agnostic to the operating system, or to some extent suitable for operating systems similar to the Qtum x86 virtual machine model.
Based on the c99 standard library specification, the Qtumx86 virtual machine implements a simplified version of the libc library for use by smart contract developers.
QTUMCORE-126: [x86] [Compiler] Figure out and document a way of compiling/packaging the QtumOS GCC toolchain for Windows, Linux, and OSX
Description: We should evaluate the C99 standard library specifications to determine which functions should be supported in the x86 VM, with easy to use tooling provided to developers (ie, a custom toolchain). List the headers and functions that are common enough to warrant support , as well as is agnostic to the operating system, or can some way fit into the operating system like model of Qtum's x86 VM.
Task:[x86][Compiler] Finding and documenting a way to compile/package QtumOS GCC toolchain for Windows, Linux and OSX
Description: As a contract developer, I don't want to compile the QtumOS toolchain when developing x86 virtual machine contracts.
For this task, study and document how to build the QtumOS GCC toolchain for Windows, Linux and OSX. Using this toolchain on all platforms should have the same experience. Following this document, anyone should be able to compile the pre-built version of GCC.
In order to use the same compiler tool for any common platform, the above task implements a cross-platform, pre-compiled gcc tool for smart contract developers*.*
QTUMCORE-127: [x86] [libqtum] Add basic blockchain data APIs
Description: As a contract devleoper, I want to be capable of getting basic blockchain data like network weight without needing to know how to write assembly code.
For this story, create a new project for libqtum to compile to libqtum.a using the QtumOS compiler, and place all definitions in a qtum.h file. The first operations to be added are some basic system calls for the following:
• Access to past 256 block hashes
• Block gas limt
• MPoS staking address for block (only the 0th address indicating the block creator)
• Current block difficulty
• Previous block time
• Current block height
These functions are not yet built into the x86 VM or Qtum, so these will just be mocks for now that can't be beta until later.
API list:
previousBlockTime() -> int32 – syscall(0)
• blockGasLimit() -> int64 – syscall(1, &return);
• blockCreator() -> address_t – syscall(2, &return);
• blockDifficulty() -> int32 – syscall(3);
blockHeight() -> int32 – syscall(4);
• getBlockHash(int number) -> hash_t (32 bytes) – syscall(5, number, &return);
Note, this inline assembly code can be used as a template for safely using the "int" opcode from C code, and should be capable of being put into a .S assembly file and used via:
//in C header
Extern long syscall(long syscall_number, long p1, long p2, long p3, long p4, long p5, long p6);
//in .S file
User mode
.global syscall
Long syscall(long number, long p1, long p2, long p3, long p4, long p5, long p6)
Syscall:
Push %ebp
Mov %esp, %ebp
Push %edi
Push %esi
Push %ebx
Mov 8+0*4(%ebp), %eax
Mov 8+1*4(%ebp), %ebx
Mov 8+2*4(%ebp),%ecx
Mov 8+3*4(%ebp), %edx
Mov 8+4*4(%ebp), %esi
Mov 8+5*4(%ebp), %edi
Mov 8+6*4(%ebp), %ebp
Int $0x40
Pop %ebx
Pop %esi
Pop %edi
Pop %ebp
Ret
Task:[x86][libqtum]Add basic blockchain data APIs
Description: As a contract developer, I hope to obtain basic blockchain data, such as network weight, without writing assembly code.
For this task, create a new project for libqtum, compile to libqtum.a using the QtumOS compiler, and put all definitions in the qtum.h file. The first operation that needs to be added is the basic system call to the following:
• Access to past 256 block hashes
• Block gas limit
• MPoS staking address of the block (only the creator of the 0th address indicator block)
• Current block difficulty
• Time of previous block
• The height of the current block
These features have not yet been built into x86 virtual machines or Qtum, so these are only temporary simulations that can be tested later
API list:
previousBlockTime() -> int32 – syscall(0)
• blockGasLimit() -> int64 – syscall(1, &return);
• blockCreator() -> address_t – syscall(2, &return);
• blockDifficulty() -> int32 – syscall(3);
blockHeight() -> int32 – syscall(4);
• getBlockHash(int number) -> hash_t (32 bytes) – syscall(5, number, &return);
Note that this inline assembly code can be used as a template for safely using the "int" opcode of C code and should be able to be put into an .S assembly file and used by:
//in C header
Extern long syscall(long syscall_number, long p1, long p2, long p3, long p4, long p5, long p6);
//in .S file
User mode
.global syscall
Long syscall(long number, long p1, long p2, long p3, long p4, long p5, long p6)
Syscall:
Push %ebp
Mov %esp, %ebp
Push %edi
Push %esi
Push %ebx
Mov 8+0*4(%ebp), %eax
Mov 8+1*4(%ebp), %ebx
Mov 8+2*4(%ebp),%ecx
Mov 8+3*4(%ebp), %edx
Mov 8+4*4(%ebp), %esi
Mov 8+5*4(%ebp), %edi
Mov 8+6*4(%ebp), %ebp
Int $0x40
Pop %ebx
Pop %esi
Pop %edi
Pop %ebp
Ret
The basic data of the blockchain is very useful for smart contract writing, but it is very difficult for ordinary smart contract developers to obtain this data without providing more tools. The above task provides an API for acquiring basic block data, enabling developers to quickly obtain relevant block data, thereby improving the efficiency of smart contract development.
QTUMCORE-128: [x86] [VM] Add very basic gas system
Description: As a contract devleoper, I want to test how intensive my prototype x86 smart contracts will be on a real blockchain.
For this story, add a very basic gas model to the x86 VM. There should be a new option added to Execute() that allows for specifying an absolute gas limit that execution will error upon hitting. It should also be possible to retrieve how much Gas was used during the execution of the program. For this basic gas model, each instruction is 1 gas. It is ok if there are edge cases where an instruction might not be counted.
Task: [x86][VM] Adds the Most Basic Gas System
Description: As a contract developer, I want to test the strength of my prototype x86 smart contract on the real blockchain.
For this task, add a very basic gas model to the x86 virtual machine. There should be a new option added to Execute() that allows you to specify an absolute gas limit, as long as you reach that value and you will get an error. It should also be possible to calculate how much gas is used during program execution. For this basic gas model, each instruction is 1gas. It is also possible if there are boundary scenes where the instruction may not be calculated.
The above task implements the most basic gas system of the x86 virtual machine, and can be used to calculate the specific consumed gas of the contract in the real blockchain.
QTUMCORE-129: [x86] [DeltaDB] Add very basic prototype version of DeltaDB
Description: As a contract developer, I want my prototype x86 contracts to persist within my own personal blockchain so that I can do more than just execute them. I need to be able to call them after deployment.
Right now, we will only concern ourselves with loading and writing contract bytecode. The key thus should be "bytecode_%address%" and the value should be the raw contract bytecode. The contract bytecode will have an internal format later so that bytecode, constant Data, and contract options are distinguishable in the flat data.
The exposed C++ class interface should simply allow for the smart contract VM layer to look up the size of an address's code, load the address's code into memory, and write code from memory into an address's associated data store.
Look at how the leveldb code works for things like "txindex" in Qtum and model this using the Bitcoin database helper if possible. There is no need for this to be tied to consensus right now. It is also also to ignore block disconnects and things That would cause the state to be reverted in the database.
Please do all work based on the time/qtumcore0.15 branch in Qtum Core for right now. Also, for the format of an "address", please look for "UniversalAddress" in the earlz/x86-2 branch, and copy the related Code if needed.
Task: [x86][DeltaDB] Add the most basic version of the DeltaDB prototype
Description: As a contract developer, I hope that my prototype x86 contract can exist in my own blockchain so that all I can do is not just run them. I hope to be able to call them after deployment.
For now, we only care about loading and writing contract bytecodes. Therefore, the key should be "bytecode_%address%" and the value should be the original contract bytecode. Contract bytecodes will have an internal format so that bytecode, constant data, and contract options can be distinguished in flat data.
The exposed C++ class interface should allow the smart contract virtual machine layer to look up the size of the address code, load the address code into memory, and write the code from memory into the address's associated data store.
Look at how the leveldb code for things like "txindex" in Qtum works, and if possible, model it using the Bitcoin database helper. There is no need to associate this issue with consensus. It is also possible to temporarily ignore the disconnection of the block and cause the state of the database to recover.
Now do all the work based on Qtum Core's time/qtumcore0.15 branch. In addition, for the "address" format, look for "UniversalAddress" in the earlz/x86-2 branch and copy the relevant code if necessary.
The above task adds the most basic database DeltaBD to the x86 virtual machine, which can be used to store contract status and is a necessary condition for contract invocation*.*
QTUMCORE-130: [x86] [UI] Add "createx86contract" RPC call
Description: As a smart contract developer, I want to be capable of easily deploying my contract code no too much worrying.
In this story, add a new RPC call named "createx86contract" which accepts 4 arguments: gas price, gas limit, filename (ELF file), and sender address.
The ELF file should be tore apart into a flat array of data refer the contract data to be put onto the blockchain.
  1. int32 size of options
  2. int32 size of code
  3. int32 size of data
  4. int32 (unused)
  5. options data (right now, this can be empty, and size is 0)
  6. code memory data
  7. data memory data
Similar ELF file processing exists in the x86Lib project and that code can be adapted for this. Note that there should be some way of returning errors and warnings back to the user in case of problems with the ELF file.
After the contract data is extracted and built, a transaction output of the following type should be constructed (similar to create contract)
OP_CREATE
The RPC result should be similar to what is returned from createcontract, except for a warnings/errors field should be included, and the contract address should be a base58 x86 address, and any other fields invalid for x86 should be excluded
Task: [x86][UI] Add "createx86contract" RPC Call
Description: As a developer of smart contracts, I hope to deploy my contract code very simply.
In this task, a new RPC call named "createx86contract" is added, which accepts four parameters: gas price, gas limit, filename (ELF file), and the sender address.
The ELF file should be split into a set of data indicating that the contract data was placed on the blockchain.
  1. int32 size of options (options, shaping 32-bit size)
  2. int32 size of code (code, shaping 32-bit size)
  3. int32 size of data (data, integer 32-bit size)
  4. int32 (not used)
  5. options data (options data, now empty, size 0)
  6. code memory data
  7. data memory data
There is a similar ELF file processing in the x86lib project, and its code can be modified according to the requirements here. Note that when there is a problem with the ELF file, there should be some way to return errors and warnings to the user.
After extracting and building the contract data, a transaction output of the following type will be constructed (similar to createcontract)
OP_CREATE
The RPC result should be similar to the one returned in createcontract, except that it contains a warning/error field, and the contract's address should be a base58 encoded x86 address. Any other fields that are invalid for x86 should be excluded.
The above task adds a new qtum rpc call, namely createx86contract. The rpc can load smart contracts directly from the elf executable file and deploy it to the blockchain. It also adds error return mechanisms to allow developers to know the contract deployment status.
summary
This chapter contains the most critical implementation details of the Qtum x86 virtual machine. Based on these tasks, the Qtum team has implemented the first virtual machine that can deploy and run x86 smart contracts. It also provides tools for writing smart contracts in C language. The prototype now supports writing contracts in C language. The implementation of the Qtum x86 virtual machine continues, and the follow-up Qtum project team will continue to expose the original design documents. Interested readers will continue to pay attention.
submitted by thisthingismud to Qtum [link] [comments]

Ethereum Bitcoin Tracker Bot , Sent or Receive Notification in Hindi BITCOIN HACK REAL PREMIUM 2019-2020 Bitcoin Address Lookup - Get Info On Any Bitcoin Wallet ... How to find wallet bitcoin address with balance 2018 Real 100% working Coinbase Address White Listing... Secure your account and avoid sending to the wrong address...

A. Ethereum has looked fairly promising since its initial whitepaper. While digital contracts are an exciting potential, bitcoin's success has always been because of the community around it, so the most impactful short-term potential I see in Ethereum is in a distributed web of trust. Of course its additions to verifiable bitcoin gambling, and ... Etherscan allows you to explore and search the Ethereum blockchain for transactions, addresses, tokens, prices and other activities taking place on Ethereum (ETH) Explore the Ethereum chain, check your balance, look up transactions or view some charts! Price ${ page.currentStats.price_usd } USD / ${ page.currentStats.price_btc } BTC With the rapid rise in the number of bitcoin scams, there are easy ways to check if a bitcoin address has been reported as being used by scammers, such as in fake bitcoin giveaways. You can also ... The Bitcoin.com Explorer provides block, transaction, and address data for the Bitcoin Cash (BCH) and Bitcoin (BTC) chains. The data is displayed within an awesome interface and is available in several different languages.

[index] [6276] [1108] [29302] [33875] [9664] [8761] [11386] [2392] [419] [30689]

Ethereum Bitcoin Tracker Bot , Sent or Receive Notification in Hindi

If you want to know how to get your wallet address to either send money, receive or you simply just want to know its very simple and easy just watch the vide... Link to this course(special discount) https://www.udemy.com/course/how-to-create-generate-bitcoin-and-ethereum-crypto-addresses-offline/?ranMID=39197&ranEAID... Bitcoin Address Lookup. https://bitcoinwhoswho.com/ In this video, you'll learn how to do a Bitcoin address lookup, so you can help protect yourself from any... bitcoin account bitcoin address lookup bitcoin analysis bitcoin atm machine ... bitcoin ethereum e bitcoin wallet e bitcoin cash e bitcoin kurs e bitcoin euro bitcoin e.g. crossword clue If you are new to Crypto, my suggestion is that you start with buying ~$150 worth of Bitcoin, Ethereum, Litecoin @ Coinbase and get familiar with storing it, moving it around, etc.

#