A quick recap: Bitcoin, the world's first cryptocurrency is a protocol structured as chained blocks, described as a ledger, running on a peer to peer network. The technology Bitcoin proposed came to be known as blockchain technology, and it provides a way for decentralised, trustless cooperation. The Ethereum network takes this concept and gives it the ability to be programmed through the way of smart contracts. Fermicoding is a development company specialized in Ethereum smart contract programming. We use Solidity to create ERC20 tokens, ICOs, DAOs or any other type of custom contract you might need for your application. We can deploy those contracts on a public ledger or set up a private one on your network. Published contracts often need a frontend to let the users interact with them. Web3.js library lets us communicate between the front end and published smart contracts. As things published on the blockchain are permanent, we perform rigorous testing on smart contracts, as well as auditing. A word of warning: These applications have some specific properties, so not all use cases are suitable for blockchain architecture.
Of all the available variant blockchain technologies, for the time being Ethereum is the most applicable if you want to build a system that has no central point, and allows for different entities that do not trust each other to work together.
In order to go arround the problem of not being able to debug and update code once it is published, we use the proposed solution of Library driven development. In short it is a concept that most code should reside in libraries, and referenced from the main contract. Those references can be changed, so in order to change the code in a library, we would just publish a new one and change the reference to point to it in the main contract.
If you want to build a system that would use what blockchain has to offer as a core feature or just a component, we'll be happy to do it with other web/mobile technologies we are working with, and connect the web/mobile app to smart contracts using the web3.js library. The workflow with smart contract dependant web/mobile applications is a little different, as it is necessary to wait for the network consensus in order to move forward, so not all types of applications work well with this technology.
Using blockchain is expensive. So it is important to put as little data on it as possible. Distributed file systems, come to the rescue, and we use them in our solutions. One is Swarm, the other is Interplanetary File System. What they allow is for files to be distributed between peers, on multiple boxes, much like a torrent file would be, so once it goes up, users don't need to worry about file becoming unavailable like it would be if a server went down. There is no such thing here.