Recently I have been working on a class project. I have built a Supply chain Dapp, that was based on truffle framework and ganache as a local blockchain. I have some issues regarding the concepts of private Ethreum blockchain.
My question is, is it possible to build a real-world private Ethereum blockchain for a specific organization without any transaction fees and what other costs should I be aware of? And the second question is do I need to deploy my Dapp on Rinkeby? It's just that I read somewhere that you should deploy your dapp to testnets like Rinkeby to demonstrate that it functions well in a setting more like to the Ethereum mainnet.
Since I just used ganache for the dapp, I wanted to be certain
I found some answers online but they were not satisfactory, it would be greatly appreciated and helpful if you could provide me with some directions on the subject, as I am relatively new to this. Thank you.
Yes you can. These are generally called permissioned chains. While you incur compute cost, your org or anyone given permission to use the chain doesn't pay for gas.
There is still a gas price, it is essentially useless since as the authority on the chain you can mint infinite gas. Such chains usually have PoA (proof-of-authority consensus).
You can use these clients to build such chains:
GoQuorum - geth fork which lags in upstream updates by a few months. Has lots of consensus algo options like QBFT/Raft. Additionally ships with privacy tx manager. Application level permissioning.
OpenEthereum (Deprecated) - My personal favorite. I have worked with this client extensively and wrote a public humanitarian chain spec with it (https://github.com/grassrootseconomics/kitabu-chain). Uses AuRA consensus. Well documented.
Nethermind - Supports AuRa consensus. Haven't used it, but should have more features than OpenEtherem.
Geth - Supports Clique. I am not a fan of clique consensus but it can work well.
I have documented some PoA consensus comparisons here. You might find it useful.
My question is, is it possible to build a real-world private Ethereum blockchain for a specific organization without any transaction fees and what other costs should I be aware of?
No, because each transaction will consume CPU, IO and network bandwidth. These must be measured and the transaction stopped, or otherwise, one malicious transaction can halt the whole network by consuming all the resources. Thus, at least an internal unit of accounting is needed.
And the second question is do I need to deploy my Dapp on Rinkeby?
Why would you do that? Please read xyproblem.info on how to ask more understandable questions.
I understand from your question that you built a Dapp and tested it using Ganache and Truffle frameworks. However, you wish to test your application on a testnet similar to rinkeby.
It appears that there are certain projects which allow you to create a mainnet fork. You just need to provide them with the infura URL of the mainnet, and they will spin up your local Ethereum mainnet fork. This enables you to test your dapp under mainnet conditions. Additionally, you may assign as many tokens as you wish to your address.
Here is a link to a repository that can perform this task.
https://github.com/yearn/yearn-mainnet-fork
To deploy your contract on the local blockchain instance, you will simply need to use the RPC URL provided by this repository.
Yes, you can indeed.
Both GoQuorum and Besu allow you to create a completely gas-free network.
https://consensys.net/docs/goquorum/en/latest/concepts/free-gas-network/?h=gas
An IT architecture composed of software that has been exposed as “Services” – i.e. invoked on-demand using a standard communication protocol. So, loose coupling on how to use SOA, give a good example.
There are three major types or methods or approaches that have been emerging for club information, disparate and systems in a business. As different service providers and businesses race towards providing solutions to customers and consumers, these approaches help to meet the requirements for coarse-grained, loosely clubbed and asynchronous services.
1. The Enterprise Service Bus
The first approach that helps to build and implement an optimal SOA is the enterprise service bus or ESB. This approach helps to coordinate and arrange the different elements that are in the form of distributed services on a network. This approach considers the systems to be discrete and distributed services that connect to one another through message oriented infrastructure that is asynchronous. This kind of a message-oriented infrastructure makes it possible to have loosely coupled connections between independent services or modules.
2. Business Process Management
Many companies, for many years now, have tried to solve business process problems by the implementation of Business Process Management approach. This approach takes into consideration the IT assets and systems as activities or tasks that participate in well synchronized and well-orchestrated business procedures. BPM tools are mainly used at the time of modeling and designing procedures rather than using them to construct processes that can reach integration objectives. This is the main challenge of BPM. By BPM solutions on their own are enough to meet SOA requirements because they do not consist of the runtime environment that is needed for loosely coupled modules.
3. Service Oriented Integration
The third and the last approach to proper implementation of SOA is the service-oriented integration approach. This particular approach makes use of the architectural guiding rules or principles to build an environment or ecosystem of services that businesses can combine dynamically and create superior level processes that can meet ever changing and evolving requirements. This approach moves past tightly coupled and brittle modules by creating a distinction between the consumer and producer of a service. It thus imposes the aspect of loose coupling that is needed to implement SOA properly to meet business requirements. Even this approach by itself isn’t sufficient to guarantee long time running interactions between services.
I just got chance to work on Ethereum, block-chain based platform. But I don't have a clear idea in which scenarios this is used, any real life use of this.Could anybody help me understand blockchain based platform and its real life uses?
Welcome to blockchain world.Don't get demotivated, Blockchain area is relatively new & hard to find good tutorials.I also started learning blockchain related technologies a month ago & I would like to share some ideas about Blockchain & Ethereum.Since your question is not directly related to Nodejs & Javascript,I would like to suggest you modify the question first.
We all start as noobs, but we can choose to end as noobs or as professionals.
Original cartoon can be found at http://ericsammons.com/what-is-the-blockchain/
Blockchain, a secure distributed ledger (data structure or database) that maintains a continuously growing list of ordered records, called “blocks.”Please watch this youtube video - Blockchain 101 - A Visual Demo to understand the basics of Blockchain.
That is a very basic visual introduction to the concepts behind a blockchain. He introduces the idea of an immutable ledger using an interactive web demo. If you are interested in playing with this on your own, it is available online at:https://github.com/anders94/blockchain-demo
Blockchain was originally developed as the technology behind cryptocurrencies like Bitcoin. A vast, globally distributed ledger running on millions of devices, it is capable of recording anything of value. Money, equities, bonds, titles, deeds, contracts, and virtually all other kinds of assets can be moved and stored securely, privately, and from peer to peer, because trust is established not by powerful intermediaries like banks and governments, but by network consensus, cryptography, collaboration, and clever code.You can learn more about Blockchain use cases from this TED talk.
Ethereum, a type of blockchain that can be used to develop decentralized applications & several banks have already adapted Ethereum to develop and test blockchain trading applications. The Ethereum blockchain was developed by a Canadian named Vitalik Buterin and this blockchain has some extraordinary capabilities. One of them is that you can build smart contracts. It's kind of what it sounds like. It's a contract that self-executes, and the contract handles the enforcement, the management, performance and payment — the contract kind of has a bank account, too, in a sense — of agreements between people.Also, JPMorgan Chase & Co, Microsoft, Intel, and more than two dozen other companies have teamed up to develop standards and technology to make it easier for enterprises to Ethereum.
Since you are using NodeJs, use Truffle to connect your Ethereum blockchain network.Truffle is a development environment, testing framework and asset pipeline for Ethereum, aiming to make life as an Ethereum developer easier. With Truffle, you get:
Built-in smart contract compilation, linking, deployment and binary management.
Automated contract testing with Mocha and Chai.
Configurable build pipeline with support for custom build processes.
Scriptable deployment & migrations framework.
Network management for deploying to many public & private networks.
Interactive console for direct contract communication.
Instant rebuilding of assets during development.
External script runner that executes scripts within a Truffle environment.
You can find a great sample project here:https://github.com/tomw1808/truffle_eth_class1
You can find really good courses on Building A Decentralised Blockchain Application in Udemy.Please message me,if you need any further information.
One example of using blockchain is Bitcoin.
The bitcoin network is a peer-to-peer payment network that operates on a cryptographic protocol. Users send and receive bitcoins, the units of currency, by broadcasting digitally signed messages to the network using bitcoin wallet software. Transactions are recorded into a distributed, replicated public database known as the blockchain, with consensus achieved by a proof-of-work system called "mining". The protocol was designed in 2008 and released in 2009 as open source software by "Satoshi Nakamoto", the name or pseudonym of the original developer/developer group. [emphasis added]
See:
https://en.wikipedia.org/wiki/Blockchain
https://en.wikipedia.org/wiki/Bitcoin_network
Node modules that can help you with developing your app:
https://www.npmjs.com/package/blockchain
https://www.npmjs.com/package/bcoin
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
As the developers are constantly using different network protocols of blockchain such as Hyperledger, multichain, Ethereum, Corda, and others. Community will appreciate if the developers & blockchain enthusiasts can pour in some key differences between various types of blockchains as mentioned above.
Thanks !
This is a good question, though not one easily addressed with a simple answer.
As #Mat0 commented above, one difference is the approaches that the various platforms are using to achieve consensus. Some use proof of work (PoW), others use variants of byzantine fault tolerant strategies (PBFT, SBFT, etc). Some use PAXOS derivative strategies. Hyperledger Sawtooth Lake has developed an innovative strategy named Proof of Elapsed Time (PoET). Some, such as Hyperledger Fabric allow pluggable consensus implementations to allow for experimentation and additional diversity.
Other platforms differ in the means by which they implement confidentiality of data and transaction execution.
Some such as Hyperledger Fabric, Hyperledger Sawtooth Lake, Corda, Ethereum and many others permit more comprehensive smart contract capabilities, while other platforms are very restrictive of the types of contract operations - such as the various platforms that only support the limited set of operations in the unspent transaction output (UTXO) protocol.
Some are more targeted to a specific use case, while others are more intended to be more general purpose. All are seeking to find ways to improve the various aspects of performance and scale.
Finally, some are intended to support permission-less public blockchain networks, while others are more oriented towards support for private, permissioned networks (consortia networks) where participation and membership is tightly controlled.
Hyperledger is focused on developing blockchain technologies suitable for use in the enterprise. The organization has been established to bring together related and even competing technologies in the expectation that the proximity and common governance will lead to interoperability and gradual consolidation.
Choosing a platform will demand significant research and a clear understanding of your use case and requirements and a good deal of experimentation. At the end of the day, there will be no easy answers.
To add to Chris's comment, with which I mostly agree, I'd expand on his comment about the "UTXO" model.
In our view (I'm the CTO of R3), one key design decision which distinguishes blockchain platforms is whether they use what I call the "replicated virtual machine" metaphor or whether they are based on the idea of transaction outputs (the "UTXO" model).
Mike Hearn wrote about this in the context of Corda's design: https://www.corda.net/2016/12/09/rationale-tradeoffs-adopting-utxo-style-model/
The key point I wanted to make, however, was that the UTXO model - at least as implemented in Corda - enables full-function code to be run... the set of supported operations is not in any way limited.
The differences become manifest mostly in the context of the non-functional characteristics of the platforms.
As Chris says, platform selection should be driven by use-case: I believe that the UTXO model we've used in Corda makes it particularly well-suited for a wide variety of financial services scenarios (that's why we made the choice to adopt that architecture!). But there is no one size that fits all.
Bitcoin technology stack — especially when enhanced with sidechains and payment channels (such as from Blockstream and Lightning Network).
Ethereum platform — currently the second most proven platform, behind the Bitcoin stack.
Hyperledger Fabric — a result of significant strategic investment from IBM and many others that is reaching into an installed base of large corporate customers.
R3 Corda — vertical-oriented blockchain technology (the company prefers "blockchain inspired" because it emphasizes significant differences between this private/permissioned ledger offering compared to the public/permissionless ledgers such as Bitcoin blockchain).
Digital Asset — another vertically focused blockchain technology that has high visibility in the financial services sector
While it is very difficult to predict the eventual winner given that it may not even be on the market, but it is possible to state what that winner will look like. Here are the 9 characteristics of a winning blockchain platform
Open source — this is necessary to cultivate a rich and diverse ecosystem and accelerate adoption through network effect.
Modular architecture with layers of programmability and customizability — as above, this cultivates an ecosystem and enables market adoption.
Global scale — scalability, performance and efficiency are essential if blockchain is to become the foundation for the "Internet of Money."
Multiple implementations of the core protocol — multiple, independently developed implementations ensure that the protocol is understood, well-defined and adds resistance to possible attacks (as occurred with the Ethereum platform in September 2016). This requires there to be an accurate and precise specification of the core protocol, as opposed to relying on one codebase that is not documented.
Hardened through public blockchain deployment — this is the only way to ensure that the system is secure and "bulletproof," by exposing it to the worst threats on the open internet, as has occurred with both the Bitcoin stack and the Ethereum platform.
Configurable for private blockchain deployment and support for confidentiality of transactions — because most businesses do not want their transactions to be visible by their competitors or by the rest of the world.
Functioning governance — there needs to be a cohesive decision-making structure that can respond in an agile and coherent manner to threats to the system.
Advanced smart contract capability — because the current generation of smart-contract technology relies on traditional languages (similar to Java or C#), which are inadequate for the rigorous requirements of large-value contracts (and are best supported by metadata-driven or mathematically verifiable programming systems).
Adequate tooling for developing, debugging, deploying, monitoring and managing smart-contract-based systems (the importance of which was underscored by the recent denial-of-service attacks on the Ethereum network).
Since 2008, when the term bitcoin was coined by Satoshi Nakamoto as a novel electronic and completely peer-to-peer cash system free of trusted third party, the interest in the bitcoin and blockchain technology has increased. Recognizing it as a revolutionizing technology across the industries, especially in banking and finance, in terms of transactions and their privacy and security, researchers are not leaving any stone unturned to come up with exotic protocols with each passing day and each is the newer, advancer and better protocol than the previous. In continuation to the blockchain series on TheBlockchainAcademy.com, I have included 6 major blockchain protocols, so as to embrace the technology and increase awareness among investors and end users of blockchain.
Hyperledger
Hyperledger is the open source blockchain platform, began in 2015 by the Linux Foundation, in an effort to support the blockchain-based distributed ledgers. The protocol focuses ledgers developed to support international business transactions, catering leading financial, technological and supply chain businesses, with the objective of improving a lot of performance and reliability aspects. The project emphasizes on making collaborative efforts for making open standards and protocols, by offering a modular framework that backs various components for diverse uses, including a range of blockchains having their own storage and consensus models, and the services for access control, contracts and identity.
Bitcoin
The starting of the bitcoin dates back to November 2008, when a thesis had been posted by Nakamoto on a US mailing list where the cryptographers share or exchange information. The thesis titled “Bitcoin: A peer-to-peer electronic cash system”, presented the following characteristics of this protocol:
Enables transaction directly with no need of any trusted third party
Enables the non-reversible transactions
Decreases credit cost in minor casual transactions
Decreases transaction fees
Prevents double-spending
Bitcoins are virtual currency, also called cryptocurrency. These are distributed while exploring the value in the data managed by software. The start of 2016 witnessed the issuance of around 15.26 million BTC, equivalent to around 7 billion US Dollars. Major technologies that make Bitcoin include hash, digital signature, public-key cryptography, P2P and Proof of Work. This blend has developed a mechanism that prevents duplication of payments and data falsification, additioinally a mechanism that prevents malicious users, which are critical for the operating system like the one for the electronic money, having no central authority.
Ethereum
Ethereum is a public, open-source and block chain oriented distributed computing protocol that features smart contracts (scripting) functionality. The protocol has provided a decentralized virtual machine called the Ethereum Virtual Machine (EVM), which carried out Turning-complete scripts by using a global network of public nodes and the token called ether, also referred to as gas. Gas is used for preventing the spam on networks and allocating the resources in proportion to the incentive provided by the request. Bloomberg explains Ethereum as shared software that is used by all; however, is tamperproof. Ethereum is also used as a protocol for decentralized applications, smart contracts and decentralized autonomous organizations, with a number of functioning applications developed on it by March 2016, New York Times says.
Ripple Consensus Network
The Ripple Transaction Protocol (RTXP), issued in 2012, has been developed upon an open-source distributed consensus ledger, Internet protocol, and native currency termed as XRP (ripples). Ripple enables instant, safe and almost free global financial transactions of any scale without any chargeback. The protocol is embraced being able to support tokens presenting cryptocurrency, fiat currency, commodity and any other value unit like mobile minutes, frequent flier miles etc. By the end of 2017, Ripple is expected to be the third-biggest cryptocurrency in terms of market capitalization, after the bitcoin and ethereum.
R3’s Corda
Corda by the Company R3 is the distributed ledger protocol that has been developed from the ground up for recording, supervising and synchronizing the financial agreements among regulated financial institutions. It is, by great deal, stimulated by, and captures the advantages of blockchain systems, with no design choices that turn blockchains unsuitable for a lot of banking scenarios. Corda’s design came up as a result of heavy analysis and prototyping with team members. It is now an open sourced protocol since the code matured further.
Symbiont Distributed ledger
This protocol was announced in October 2016 as a software development kit for the Assembly, which is the permitted distributed ledger part of Symbiont’s smart contracts system. Assembly is considered as the first distributed ledger suitable for institutional finance. It is a greatly secure, high performing Byzantine fault-tolerant distributed ledger, which can process a sustained 80,000 transactions every second in a local multi-node network. As stated by Co-founder of Symbiont, decentralized systems should no longer be slow and with Assembly, it has been fulfilled.
You can learn more about Blockchain and implementing your own Blockchain # IBM Blockchain 101: A quick-start developer guide
This is the subject of a number of recent academic papers, as the field expands rapidly.
These for example are based on Consensus in the Age of Blockchains:
Committee Formation - How the members of the committee are chosen, for example via proof-of-work, proof-of- stake,
trusted hardware etc
Consistency - The likelihood that the system will reach consensus on a proposed value; it can be either strong or weak
Incentive Model
Safety ( Transaction, Censorship Resistance, DoS Resistance)
Adversary models considered
Performance (Throughput, Scalability, Latency)
Exp. Setup
Code availability
See also Blockchain Consensus Protocols in the Wild.
The main thing that differentiate each different blockchain is the consensus algorithm. Some algorithms are meant for public chain (eg: bitcoin blockchain) whereas some algorithms are meant for permissioned network (eg: Ripple, Hashgraph).
I will be bold and say that Confidence Coin is perhaps the fastest blockchain technology in terms of broadcasting events.
Better encoding. Every time a new address is used in a transaction it is saved to the blockchain database, so next time it is spotted it replaced with a numeric value. Bitcoin can encode about 2K transactions in one megabyte of a block while Coco can have up to 100K transactions in same space.
The principal problem in blockchain P2P networks is their size, with each new node added to the system it takes more time to broadcast new blocks to everyone. There are 11,000 nodes in Bitcoin as of 2018. The source of Coco speed is in its Royal Network. It's called royal as in order to join the network you must mine a block. It allows only the best Pools to be part of the Royal Network. It's funny as in Bitcoin over 95% of the blocks mined by less than 20 Pools, but instead of direct communication between them, their messages traverse the entire 11,000 nodes.
Disclaimer: I am the developer of Coco.
There will be several difference between those blockchain projects:
Application: The specific application or domain they are focusing on. Some blockchain projects are public basic blockchains, like Ethereum, you can develop your own applications on it with the support of smart contract. While others may focus on certain domain, such as entertainment, storage, finance etc.
Consensus Protocol: as mentioned by others as well, different blockchain projects may use different consensus protocols, such as: PoW, PoS, DPoS, BFT, DBFT etc. So many consensus protocols were proposed. Although, honestly speaking, for now, only PoW works well for a long time.
TPS: it's actually related with the 2nd point, consensus protocol can certainly affect the performance/TPS, however, block design, and technologies like sharding, lightning network can significantly affect the TPS as well. Specific technologies used to improve scalability can also differentiate those projects.
Smart Contract: programming languages used to develop smart contract, whether the contract is secure, whether the development environment is user friendly, those are also the factors that should be considered to differentiate the blockchain projects.
This is a very broad question. In short each protocol was built with rules to potentially address a particular objective or business use case challenge.
So the answer to your question can be narrowed by differentiating the purpose for each protocol is built.
Blockchain protocol solves decentralized ledger
Ethereum protocol solves decentralized ledger ,enable decentralized applications and smart contracts
Ripple protocol solves not only decentralized ledger, smart contracts but also addresses speed and cheaper transactions
Hyperledger Fabric solves providing restricted access to decentralized ledger.
R3's corda solves decentralized ledger for financial sector with no need for mining
Therefore each protocol has logic and rules built trying to solve the primary objective it chose. However the underlying concept is still the blockchain for each of the protocols.
Hope this answers your question at high level.
I understand that the BigChainDB is a distributed DB at the basic level.
It claims that is solves the problem of Scalability in the BlockChain world. What i don't understand is that how it fits into the overall block chain architecture.
In the typical Block Chain world, each node has the full copy of the
data and validates any new transactions? How does this work in the
BigChain DB when the data is distributed? Each node validates only the
blocks that it holds? Even if thats the case, it needs the entire
chain? Not clear on the processing scalability here.
Can i build a block chain network just with the BigChainDB or do i
need something like Ethereum or Hyperledger to build the block chain
network itself?
If i can build the blockchain network with BigChainDB, then what is
the equivalent of smart contract in BigChainDB?
BigchainDB internally uses RethinkDB as a datastore. Technically, the blockchain is stored as JSON strings inside RethinkDB. And BigchainDB is a kind of wrapper on top of this storage which provides the needed cryptography, techniques for building the blocks, parsing the blocks and provides utility methods to access the database. RethinkDB provides clustered storage with possible shard based architecture. This makes BigchainDB scalable when RethinkDB is configured accordingly.
Yes. It is possible to build a blockchain network just with BigchainDB.
BigchainDB library provides APIs to be called from our code. So we can build any application(preferably in Python) and integrate BigchainDB into it. This means, the business logic stays inside our application code. This is totally different from Smart contracts used in Ethereum.
You can have a look at my github code for more insights. It is my college project and not much documentation is available :-D It is a voucher transfer application where company like Sodexo issue vouchers and users can redeem it in private companies like Starbucks.