Blockchain. Why is it so important for the crypto industry?
Greetings to all my readers! I want to talk to you about Blockchain, and why it is so important for the crypto industry. Let’s take a look at the basics, and how blockchain works.
Blockchain seems complicated, and it definitely can be, but its core concept is really quite simple. A blockchain is a type of database. To be able to understand blockchain, it helps to first understand what a database actually is.
A database is a collection of information that is stored electronically on a computer system. Information, or data, in databases is typically structured in table format to allow for easier searching and filtering for specific information. What is the difference between someone using a spreadsheet to store information rather than a database?
Spreadsheets are designed for one person, or a small group of people, to store and access limited amounts of information. In contrast, a database is designed to house significantly larger amounts of information that can be accessed, filtered, and manipulated quickly and easily by any number of users at once.
Large databases achieve this by housing data on servers that are made of powerful computers. These servers can sometimes be built using hundreds or thousands of computers in order to have the computational power and storage capacity necessary for many users to access the database simultaneously. While a spreadsheet or database may be accessible to any number of people, it is often owned by a business and managed by an appointed individual that has complete control over how it works and the data within it.
One key difference between a typical database and a blockchain is the way the data is structured. A blockchain collects information together in groups, also known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are chained onto the previously filled block, forming a chain of data known as the “blockchain.” All new information that follows that freshly added block is compiled into a newly formed block that will then also be added to the chain once filled.
A database structures its data into tables whereas a blockchain, like its name implies, structures its data into chunks (blocks) that are chained together. This makes it so that all blockchains are databases but not all databases are blockchains. This system also inherently makes an irreversible timeline of data when implemented in a decentralized nature. When a block is filled it is set in stone and becomes a part of this timeline. Each block in the chain is given an exact timestamp when it is added to the chain.
Blockchain technology accounts for the issues of security and trust in several ways. First, new blocks are always stored linearly and chronologically. That is, they are always added to the “end” of the blockchain. If you take a look at Bitcoin’s blockchain, you’ll see that each block has a position on the chain, called a “height.” As of November 2020, the block’s height had reached 656,197 blocks so far.
After a block has been added to the end of the blockchain, it is very difficult to go back and alter the contents of the block unless the majority reached a consensus to do so. That’s because each block contains its own hash, along with the hash of the block before it, as well as the previously mentioned time stamp. Hash codes are created by a math function that turns digital information into a string of numbers and letters. If that information is edited in any way, the hash code changes as well.
Here’s why that’s important to security. Let’s say a hacker wants to alter the blockchain and steal Bitcoin from everyone else. If they were to alter their own single copy, it would no longer align with everyone else’s copy. When everyone else cross-references their copies against each other, they would see this one copy stand out and that hacker’s version of the chain would be cast away as illegitimate.
Succeeding with such a hack would require that the hacker simultaneously control and alter 51% of the copies of the blockchain so that their new copy becomes the majority copy and thus, the agreed-upon chain. Such an attack would also require an immense amount of money and resources as they would need to redo all of the blocks because they would now have different timestamps and hash codes.
Due to the size of Bitcoin’s network and how fast it is growing, the cost to pull off such a feat would probably be insurmountable. Not only would this be extremely expensive, but it would also likely be fruitless. Doing such a thing would not go unnoticed, as network members would see such drastic alterations to the blockchain. The network members would then fork off to a new version of the chain that has not been affected.
This would cause the attacked version of Bitcoin to plummet in value, making the attack ultimately pointless as the bad actor has control of a worthless asset. The same would occur if the bad actor were to attack the new fork of Bitcoin. It is built this way so that taking part in the network is far more economically incentivized than attacking it.
As we now know, blocks on Bitcoin’s blockchain store data about monetary transactions. But it turns out that blockchain is actually a reliable way of storing data about other types of transactions, as well.
Some companies that have already incorporated blockchain include Walmart, Pfizer, AIG, Siemens, Unilever, and a host of others. For example, IBM has created its Food Trust blockchain to trace the journey that food products take to get to its locations.
Why do this? The food industry has seen countless outbreaks of e Coli, salmonella, listeria, as well as hazardous materials being accidentally introduced to foods. In the past, it has taken weeks to find the source of these outbreaks or the cause of sickness from what people are eating.
Using blockchain gives brands the ability to track a food product’s route from its origin, through each stop it makes, and finally its delivery. If a food is found to be contaminated then it can be traced all the way back through each stop to its origin. Not only that, but these companies can also now see everything else it may have come in contact with, allowing the identification of the problem to occur far sooner, potentially saving lives. This is one example of blockchains in practice, but there are many other forms of blockchain implementation.
Covalent is to empower the pioneers of tomorrow by providing the richest and most robust data infrastructure for the entire blockchain ecosystem.
- 25 billion rich transactions indexed including every transaction since genesis
- 30,000+ Price feeds for fiat and crypto pairs.
- 200K+ Smart contracts available with internal data structures for querying.
- 30 second refresh rate
Developers get simple APIs that allow for quick integration in new or existing projects.
- Get token balances
One API call to get ERC20 and NFT token balances, current and historical values in dozens of quote currencies and cryptocurrency logos.
>>> curl https://api.covalenthq.com/v1/1/address/{ens.eth}/balances_v2/{
"data": {
"balances": [
{
"contract_decimals": 18,
"contract_name": null,
"contract_ticker_symbol": "ETH",
"contract_address": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"logo_url": "https://logos.covalenthq.com/tokens/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.png",
"type": "cryptocurrency",
"balance": "2349416542132499968",
"quote_rate": "159.26154203702",
"quote": "374.17170138730535","nft_data": null
},
{
"contract_decimals": 0,
"contract_name": "SuperRare",
"contract_ticker_symbol": "SUPR",
"contract_address": "0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0",
"logo_url": "https://logos.covalenthq.com/tokens/0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0.png",
"type": "nft",
"balance": "1",
"quote_rate": "0",
"quote": "0",
"nft_data": [
{
"token_id: "10835",
"token_url: "https://ipfs.pixura.io/ipfs/QmaH9AB84oLMNVs5XjVjfXVR9yu3WttBBfymcgn8d2vb3o/metadata.json",
"external_data: {
"name": "Invisible Heroes",
"description": "Digital adaptation of the original art piece on panel and acrylic colors commissioned to our studio."
"image": "https://ipfs.pixura.io/ipfs/QmUydPFWzfHsfam822rdqBigFybMgPWMu1znRSYobSc6c7/InvisibleHeroes.gif",
"external_url": null,
"attributes": null
}
}
]
},
{...}
],
"pagination": null
},
"error": false,
"error_message": null,
"error_code": null
- Get Uniswap v2 network assets
Return a paginated list of Uniswap pools sorted by exchange volume along with swap count, liquidity token prices and reserve depths.
>>> curl https://api.covalenthq.com/v1/1/networks/uniswap_v2/assets/{
"data": {
"items": [
{
"exchange": "0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852",
"swap_count_24h": 7985,
"total_liquidity_quote": 525100896,
"volume_24h_quote": 48004844,
"fee_24h_quote": 144014.53,
"total_supply": "9703044189776917297",
"quote_rate": 54117128,
"block_height": 11234307,
"token_0": {
"contract_address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"contract_name": "Wrapped Ether",
"volume_in_24h": "49505561366676719673726",
"volume_out_24h": "55151776228662741895871",
"quote_rate": 462.10663,
"reserve": "569355745661046587479600",
"logo_url": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",
"contract_ticker_symbol": "WETH",
"contract_decimals": 18
},
"token_1": {
"contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"contract_name": "Tether USD",
"volume_in_24h": "25200174191395",
"volume_out_24h": "22483055440426",
"quote_rate": 0.9992369,
"reserve": "262197928730616",
"logo_url": "https://logos.covalenthq.com/tokens/0xdac17f958d2ee523a2206206994597c13d831ec7.png",
"contract_ticker_symbol": "USDT",
"contract_decimals": 18
}
},
{...}
],
"pagination": {
"has_more": true,
"page_number": 0,
"page_size": 100,
"total_count": 1750,
}
},
"error": false,
"error_message": null,
"error_code": null
- Get historical token holders of any ERC20 token
Reconstruct the state of any smart contract token to retrieve current and historical token holders.
>>> curl https://api.covalenthq.com/v1/1/tokens/{address}/token_holders/{
"data": {
"items": [
{
"contract_decimals": 18,
"contract_name": "Golem Network Token",
"contract_ticker_symbol": "GNT",
"contract_address": "0xa74476443119a942de498590fe1f2454d7d4ac0d",
"logo_url": "https://logos.covalenthq.com/tokens/0xa74476443119a942de498590fe1f2454d7d4ac0d.png",
"address": "0x168ae36b4386cea14475faa41498a0ea63c67dd7",
"balance": "100000999999999991611392000",
"total_supply": "1000000000000000000000000000",
"block_height": 11234253
},
{
"contract_decimals": 18,
"contract_name": "Golem Network Token",
"contract_ticker_symbol": "GNT",
"contract_address": "0xa74476443119a942de498590fe1f2454d7d4ac0d",
"logo_url": "https://logos.covalenthq.com/tokens/0xa74476443119a942de498590fe1f2454d7d4ac0d.png",
"address": "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
"balance": "82333625090901916179022960",
"total_supply": "1000000000000000000000000000",
"block_height": 11234307
},
{...}
],
"pagination": {
"has_more": true,
"page_number": 0,
"page_size": 100,
"total_count": 1750,
}
},
"error": false,
"error_message": null,
"error_code": null
- Get log events
Automatically decode event logs with the right data types, including those emitted through proxy contracts. Make calls by contract address or topic hash(es).
>>> curl https://api.covalenthq.com/v1/1/events/0x5c0b...f0fc/{
"data": {
"items": [
{
"block_signed_at": "2020-04-27T09:41:52Z",
"block_height": 9951904,
"tx_offset": 38,
"log_offset": 14,
"tx_hash": "0x7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0",
"raw_log_topics": [
"0x7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0"
],
"sender_address": "0x448a5065aebb8e423f0896e6c5d525c040f59af3",
"sender_address_lable": null,
"raw_log_data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044440f19ba00000000000000000000000000000000000000000000000000000000000032450000000000000000000000000000000000000000000000d8d726b7177a800000",
"decoded": {
"name": "ProposalCreated",
"signature": "ProposalCreated(uint256 id, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 startBlock, uint256 endBlock, string description)",
"params": [
{
"name": "id",
"type": "uint256",
"indexed": false,
"decoded": true,
"value": "1"
},
{
"name": "proposer",
"type": "address",
"indexed": false,
"decoded": true,
"value": "0x8169522c2c57883e8ef80c498aab7820da539806"
},
{
"name": "targets",
"type": "address[]",
"indexed": false,
"decoded": true,
"value": [
{
"value": "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b",
"typeAsString": "address"
},
"value": "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b",
"typeAsString": "address"
}
]
},
{...}
]
}
},
{...}
],
"pagination": {
"has_more": true,
"page_number": 0,
"page_size": 100,
"total_count": 1750,
}
},
"error": false,
"error_message": null,
"error_code": null