What is Blockchain?
Blockchain is a distributed ledger which is like a database that holds a copy on all participating systems within a network. It is an append only database which means we cannot delete any record. These records are connected by saving cryptographic hash of transactions of the previous block (not for genesis block) hence forming a chain of blocks.
Blockchain transactions are stored on nodes within the blockchain network and each node contains a copy. Any update to the transactions is verified by nodes and this process is called mining which uses a special protocol.
Blockchains also called ledger of records, are maintained to provide ownership of any asset e.g., ownership of property, contract between tenant and landlord etc. We can also call blockchain a newer system which holds any sort of data encrypted and can be accessed using asymmetric encryption. This is new way of keeping data on distributed nodes using cryptography to secure unauthorized access and tempering. Blockchain consists of cryptography, ledger, consensus mechanism, and mining. In major cases the data of blockchain specifies ownership of an asset for example along with history of all changes occurred to that ownership since it has been created.
The earliest blockchain ledger came into inception nearly 7000 years ago forming a big milestone for human society, culture and a foundation of our economic. Until then ledgers have not been used and sale purchase were among indigenous tribes only, we also call this culture as nomadic lifestyle later humanity chose to move towards agrarian lifestyle.
As human society embraced economic laws and started accumulating wealth, it became hard rather next to impossible to carry wealth all the time. This created the establishment of a ledger which needed to be kept with reasonably trusted part of society. In the modern era we could call a bank which holds ledgers of wealth owned by account holders. This facility allowed humans to increase trade and conduct commerce, therefore providing facilities initially to small tribes then to villages and later to cities and metropolitans
Cryptography is another important feature of blockchain which allows for the transfer of information from one participant to another without fear of information breach or fear of information transferred to the wrong audiences. Use of cryptography is quite old, and it is used to protect anonymity of transaction sender, immutability of data within transaction and to validate claims of ownership of digital assets being stored on a network. It uses extensive use of computer networks.
The last part of this brief report explains that computers have been using networking to stay connected to develop a peer-to-peer network. This way peers can make a network of nodes, therefore information, therefore, establishing a network for blockchain.
Assets and Blockchain
These are components of Blockchain network and called digital assets as well. They depict that we are keeping digital record of one or many attributes of items which matter.
Blockchain started as a record-keeping system to record the transfer of digital “tokens” or “coins” such as Bitcoin and other cryptocurrencies. Out of the need to create a record of digital ownership, blockchains were born.
In many ways a blockchain seeks to supplement the internet of information we know today, with the internet of value we’re designing for the future (“Blockchain_101.Pdf” n.d.)
Blockchains are important because they provide a safe and secure way for people to make transactions without having to trust the other party. This concept in blockchain is known as “trustlessness”– if each participant in a transaction can trust in the accuracy and integrity of the ledger there is no additional requirement for trust between them. Blockchains provide a digital immutable ledger that is widely distributed, and peer validated. It is important to note that a Blockchain does not require currency to function properly and most enterprise-level Blockchain applications require no special currency, coin, or token.
A blockchain can also be used as an event tracking system where announcements mark the occurrence of significant events, and those events can be made actionable using Smart Contracts software programmed to respond to certain types of these events. By using Smart Contracts to handle meaningful events, Blockchain can also be a workflow/ Business Process Management (set of strategies to optimize automated or manual processes in organization) or Business Process Automation (Automating manual process of organization) platform.
Most relevant real-world example of blockchain is cryptocurrency. E.g Bitcoin, Ethereum,Avax etc.
Smart Contracts
Each blockchain has its own programming language for Smart Contract. E.g Solidity is used in Ethereum, Rust is used in Solana, Chaincode is used for Hyperledger Fabric, Vyper is python like language for Ethereum, Yul is another language which is low level web assembly for Solidity.
We could use Piet (slock.it) for smart contract testing and can create smart contracts for Ethereum on https://remix.ethereum.org/
History of Blockchain
Blockchain History
This started with a white paper published by anonymous author Satoshi Nakamoto after 2008
financial crises. First crypto currency bitcoin which keeps its account holder highly anonymous using asymmetric encryption (pubic, private key encryption).
In below timeline evolution of few blockchain networks could be seen
Cryptocurrency and Blockchain
It is not uncommon to hear comparisons made between blockchain and the internet. Both are revolutionary technologies with the power to reshape the way we think, act, and view the world. Comparisons of the two platforms often invoke remembrances to the famous adage that “history does not repeat itself, but it oftentimes rhymes”. This is due to the many similarities that blockchain shows at this early stage to early stages of internet roll-out and adoption. Perhaps the biggest similarities between the two platforms exist in the first “killer app” to be built upon each.
When reflecting on the history of the internet, it’s easy to see that the first truly consumer-grade application built on this new technology platform and deployed at scale was email. In other words, email was the introduction many early users had to the internet. Of course, as we all know, email is hardly the only use case for the internet and is far from the most interesting, dynamic, or impactful. Similarly, the first consumer-grade application built on blockchain and deployed at scale has been cryptocurrency. For many early users, cryptocurrencies serve as the introduction and first hands-on experience with blockchain technology. However, just as the internet is far more than just email, blockchain is far more than just digital currencies.
If up until this point in time, you believed that Bitcoin was the world’s first attempt at a digital currency which is disintermediated and trustless you would be mistaken – but you would hardly be the only one. The truth is before Bitcoin many other attempts had been made to create a truly fungible digital currency. The reason we hear little about these prior attempts is that they all failed to solve one critical problem a currency must address – the double-spend problem.
Double-spending is a potential flaw in a digital cash scheme in which the same single digital token can be spent more than once. This is possible because a digital token consists of a digital file that can be duplicated or falsified. This problem was prominent when trying to create a decentralized currency but was solved by blockchain. Blockchain solved this by putting transactions in a block, verifying each transaction, then adding these blocks to the chain.
Cryptocurrencies have some similar characteristics to fiat currency:
Benefits of using Blockchain
Why Use Blockchain?
The oldest and most well-known approach to systems architecture is a centralized approach. In a centralized solution, there is typically one owner or small group of participants whose control of the solution, the data which the solution works with, and the infrastructure that delivers the solution. In other words, all layers and components of the solution are owned and managed by a central authority.
Another approach is a distributed or cloud approach. In a distributed solution, centralized control, ownership of the solution and the data which makes up the solution are retained. However, ownership of the infrastructure which delivers the solution is given up. Facebook is a great example of a distributed solution – Facebook owns application as well as the data which goes into the application, but Facebook has largely given up ownership and management of the infrastructure that delivers the solution to hosting providers such as Microsoft, Amazon, or IBM.
A decentralized approach removes centralized ownership and control at all levels within a system. In a truly decentralized solution, the solution itself and its data is shared amongst entire participants along with its infrastructure provided by the community at large.
Blockchain Benefits
Blockchain provides many benefits, but it does have drawbacks as well. Understanding both is critical to applying the right technology to the problem set you’re addressing. Before detailing the specific benefits and drawbacks, it’s critical to understand that the benefits provided by blockchain always come at the expense of efficiency, speed, and performance.
Blockchain is, by design, an exceptionally inefficient solution. However, by embracing these inefficiencies we gain the benefits of security, redundancy, and massive fault tolerance.
Embracing such an inefficient approach can seem very odd to those who have spent a career in traditional I.T. and have been conditioned to purge inefficiency whenever possible.
The benefits of blockchain solution include:
- Shared Software Infrastructure among Organizations within business
- Your internal line of information systems hold data which is single source of truth for any question about your organization, but what is the single source of truth for processes that span multiple organizations in your business network?
- Publicly Verifiable
- Accountability to customers and end-users also called permissionless
- Secure
- Control who sees what data when (permissioned)
- Quality Assurance
- Track the origins of all supply chain components. For example, food origin and/or safety recall.
- Smart Contract as a replacement for middlemen operators
- Lower Transaction Costs
- Removing middlemen reduces cost
- Tokenization
- Create trade-able tokens backed by real-world value
- Fractional Asset Ownership and Asset Digitization. For example, own 1 car in 1 city, or own 100 cars in 100 cities
- Redundant and Highly Fault Tolerant
- Distributed ledger is fault tolerant in that if a single node were to lose track of the ledger it would remain somewhere else on the network.
- To better understand fault tolerance, we can think of a group message where all members in a group keeps copy of conversation. Anytime a message is deleted it should be updated on everyone’s copy.
- Bring Clarity and Transparency to Business Processes
- No Centralized Authority
- Low Barrier to Entry
- Instant, Global Transactional Capabilities No Double-Spending
Digital Identity
Blockchain networks
Peer to Peer (p2p)
Centralized and Distributed system architecture solutions usually adopt a client / server network approach. Blockchain and decentralized applications platforms largely forego client / server to adopt a Peer-to-Peer (P2P) approach. In a P2P network, all nodes or computers are equal to all others. There are no servers; all nodes are clients and servers simultaneously. This allows for virtually unlimited fault tolerance and builds in failover abilities, as well as backups via data redundancy. All of this comes at the expense of performance and efficiency.
Decentralized Networks and Ledgers
In a blockchain the ledger is stored, updated, and maintained by a peer network. Each node in this network maintains its own individual copy of the ledger. In blockchain network consensus is required (any algorithm Proof of Work (PoW), Proof of Stack (PoS) etc.) to allow update of a ledger (save as new transection) which will be available on all participating peers within network. This new copy of updated data is available as permanent data.
Why a Decentralized Network?
As mentioned, we assume right from the beginning that none of the participants will or have to trust one another. If they trust in the integrity and the accuracy of the blockchain itself, they do not have to trust each other. Imagine if you were going to try to attack a network with this architecture, you could not perform a denial-of-service attack. The only true way to attack a network like this would be to take every single node offline.
If you scale up this picture let’s say 10x or 100x (adding nodes) you can see just how powerful and secure this network becomes. Nodes can go online and offline as they choose, and the network continues to function seamlessly. When an offline node comes back online it can simply sync back up to the current state of the ledger with the other nodes online. This allows blockchain to not have a single point of failure or dependency that must be entrusted. This makes blockchain, and by extension, P2P architectures ideal for scenarios where network connectivity or uptime is not a guarantee – this is why there is a lot of interest and excitement around blockchain in parts of the world with developing infrastructure.
Types of Blockchain
Types of Blockchain
To properly describe a blockchain solution, additional terms must be entered into the conversation. A blockchain solution can be measured and described against the following three metrics
Public vs. Private
Who can write data to the blockchain? Public blockchains allow for large audiences or the public itself to add data to the ledger. Bitcoin is a great example of a public blockchain network
– there are no rules or permissions around who can trade Bitcoin. Anyone can buy, sell, or send Bitcoin to anyone else. A blockchain solution used to track how charitable donations are used by a non-profit would be a great example of a private solution. In such a solution, only designated officers of the non-profit organization should be allowed to share metrics detailing how donations are allocated and spent.
Open vs. Closed
Who can read data from the blockchain? Open blockchains allow large audiences or the public itself to consume all the ledger data. Closed blockchains attempt to restrict read access. Once again, Bitcoin is a great example of an Open platform; anyone in the world can use a blockchain explorer to view the details of any Bitcoin transaction, whether they were a participant or not. An example of a closed blockchain solution might be a platform for managing elections. In
such a solution it would be important that only election officials have access to election results and the individual votes cast by each voter – such information may not be well-suited for public consumption.
Permissioned vs. Permissionless
Blockchain network which allows access to everyone is called permissionless. It doesn’t manage or track identity. We can however build permissioned access to network by adding identity checking and tracking, therefore, called permissioned.
While developing a blockchain network, we can find out if all participants in a network would need similar permissions or different ones. Based on such requirements permissioned access logic could be implemented.
It can sometimes be helpful to have a visual model when planning your blockchain solution. Feel free to use a quadrant such as the one below when mapping out a solution. For any envisioned use case, where does it fit on the model below? In other words, which combination best describes your desired solution?
Public / Open
Anyone can write data, anyone can read data Public / Closed
Anyone can write data, but only a few can read data Private / Open
Only a few can write data, many can read data Private / Closed
Only a few can write data, only a few can read data
Creating, linking and mining blocks
How Blocks are Created
What is a “block”? Perhaps the simplest analogy for understanding blocks in a blockchain is to think about sheets of paper in a notebook. Imagine an audience sitting in front of a stage. Each member in the audience has been given an identical notebook and a pen. Anytime a transaction is to be recorded on the ledger, the participants will walk up on the stage and announce their transaction to the audience. The audience will then record the transaction in their notebook, one transaction per line.
Eventually, an entire page in the notebook will be filled with transaction data. At this point, the audience will compare their current sheet of paper with the current sheet of paper held by all the other audience members. If the audience, collectively, finds a version of the data that more than 50% agree on or share, this data is the truth. If the audience can find a version of the transaction data shared by most of the audience, then two things happen:
If a participant who holds the identical data as the majority will discard their block
and obtain a new copy from those in the majority, thus putting them back in sync
with the rest of the participants.
Once everyone is synced up, each participant will begin the process again by
recording announced transactions on a fresh sheet of paper.
If this process makes sense, congratulations! You now understand a core concept of blockchain
technology!
Two items to note:
Block within the blockchain is just like a sheet of paper in the sense that neither has to know or care what type of data is recorded on it. Paper works equally well to store financial data, graphic data, musical data, weather data, etc. Data points of vastly different types with no relation to one another can happily co-exist on a block or a piece of paper. The block or sheet of paper is just a simple record-keeping device.
In this example we assumed that transactions are recorded until the sheet of paper is full, then that sheet is validated by the entire audience. Blocks are mined on a schedule. Imagine the same scenario as above, but in this revision, there’s a timer that buzzes every XX seconds. When this buzzer goes off the audience compares their sheets of paper.
How are Blocks “Chained” Together?
All blockchain data is stored in blocks and the average block size varies from 1.1 MB to 1.3 MB. Each block will have a previous block hash stored in the current block. All previous block transactions will create a value of ‘Hash’ (encrypted, for example, with SHA256) that will be stored in the next block. Hence, Blockchain’s name. Data within a block is submitted to a function usually called ‘cryptographic hash’. It will generate a unique hash value of validated data in previous block which is stored in header of next block. Anytime data is changed in previous block the ‘unique hash’ will be changed, therefore, data tempering will be detected in blockchain.
Changing the data on any block in a Blockchain will result in a completely different hash and the new hash will not match the hash in the next block header thus breaking the Blockchain and invalidating all blocks linked to where the change was made. This gives Blockchain its property of immutability (can’t be changed) and makes it highly censorship resistant.
The height of a block within blockchain simply refers to number of blocks on the chain after the one in question. Block height is an indicator of the security of the data on the block. Data tempering in block can’t be possible until data in all subsequent blocks are changed changing data in any block requires an attacker to change every subsequent block. The higher the number of blocks attacker of those blocks an attacker must alter, the harder it becomes to pull off an attack.
Mining a Block
Blockchains are distributed when computers download the blockchain. These computers are known as nodes. When a block is filled up, it is validated through group consensus before it can be added to the chain of previously validated blocks. There are several Blockchain consensus mechanisms but regardless of the consensus type used, it is important to note that all transaction data on a chained block is assumed to be trustworthy and the chained data has not been tampered with due to the validation of data by group consensus
A blockchain gets more secure over time. If there are more blocks confirmed that means that there would be a smaller chance of a different chain being selected as the primary one. A fork is a change of protocol. There are two types of forks, a hard and a soft fork. A hard fork is a fork where the data is not backward compatible. This results in a new blockchain being created. A soft fork occurs when data is backward compatible, resulting in a change that would not create a new blockchain.
How do we make sure the blocks agree – Consensus
Group Consensus
A critical concept to be familiar with in blockchain is that of group consensus. This is a simple concept which states that there’s no way to know, without any room for doubt, what the absolute truth is. Therefore, we assume the truth to be whatever most participants agree on. A great example of this is a police detective working to solve a crime. Imagine that you are that detective. One day the police chief asks you to investigate a bank robbery. Since you were not present when the bank was robbed, you don’t know the actual truth of what happened. However, as a detective, it is your job to try to determine what transpired. So, you do what any good detective would do in such a situation – you find witnesses to the event and ask them what they observed.
Imagine the following – you query ten witnesses about the robbery. Eight out of those ten witnesses tell you one version of the event – which four robbers ran out of the bank, jumped into a red sedan and drove away from the bank heading north. Two of your ten witnesses tell a much different story – that two robbers ran out of the bank, got into a white pickup truck and drove away from the bank heading south.
Which version is the truth? As a good detective, you’re likely to believe the version of the story told by most of the participants. When you provide a suspect description, you’ll most likely describe four robbers in a red sedan heading north. This same principle is used extensively in blockchain – the truth is always assumed to be whatever most participants agree on.
Types of consensuses
Proof of Work
Bitcoin the first blockchain technology, has implemented BFT (byzantine, fault tolerance) using proof of work.
In proof of work consensus mining nodes will attempt to guess ‘nonce’ (a piece of data) to validate block. Block data and current guess (nonce) are fed into cryptographic hash. In case result matches current level of difficulty (normally a fixed number of leading zeros) that means the minor has guessed correct answer.
Proof of Stake
Also called PoS initially used by Ethereum a relatively new consensus. It discards guessing game for validation hence removing the requirement of heavy computing resources required by Mining nodes.
PoS uses a system where each validator (minors) pays a stake for transaction validation. At time of group consensus, all nodes who want to participate in consensus will look for funds in stake. Random node is selected; hash of nodes’ data is published to rest of participants.
Other Consensus Mechanisms
Proof of Activity
Hybrid consensus which used Proof of Work and Proof of Stake. It selects empty template blocks mine them using Proof of Work and later filled with transactions that are validated using Proof of Stake
Proof of Burn
Where crypto coins are ‘burned’ by sending to a public address (the private key is unknown, therefore, can’t be retrieved). The more coins the coins are burned the better chances of the miner is to be selected for mining the next block.
Proof of Capacity
This is where hard drive space is accumulated or staked to be part of mining blocks. The more the disk space is stacked the better chances the miner gets to mine the next block. The consensus generates huge datasets named ‘plots’ and they consume disk space
Proof of Elapsed Time
Initially, this was developed by Intel corp. and runs on their trusted execution environments and is similar to Proof of Work with the addition of consuming a lot more energy efficiency. However, a drawback of this consensus is that it violates the basic principle of blockchain because of its dependency on Intel.
Proof of Authority
A Set of ‘authority holding nodes’ which are allowed access to create new blocks and keep the blockchain secure. It replaces proof of work for private blockchains only. Blockchain nodes must earn the right to be granted ‘authority nodes’.
Uses of blockchain
Blockchain 2.0 and Ethereum
When Bitcoin went live in 2009, blockchain was nothing more than a record-keeping device, a place to permanently record data for future use. Bitcoin and other platforms that only offer the ability to store and retrieve data are often referred to as “blockchain 1.0” platforms. In 2015 Ethereum introduced the concept of “blockchain 2.0” platforms by introducing the concept of Smart Contracts. The ability for developers to include custom logic and rules in their transactions now meant blockchains could do more than just data storage; it was now a fully-fledged application development platform. Business processes could be modeled and automated on the same platform that transaction data lived on.
Today, Ethereum is one of the most widely used blockchain platforms. Smart Contracts, also known as chain code, are a way to program rules and decision points into transactions and processes on a blockchain. For those from a development background, a Smart Contract can be thought of as a class in traditional programming terms. Smart Contracts are published to the blockchain directly and allow one to automate transactions and ensure they all follow the same rules. Each Smart Contract, along with the transactions it performs, exists as records or transactions on the blockchain. Therefore, Smart Contracts also live as permanent entities on the blockchain – this is an important point to keep in mind when evaluating a Smart Contract as a potential solution component.
Blockchain in Global Supply Chain
Global Supply Chain is a huge area where many feel blockchain will see one of the most immediate impacts. In fact, in 2018, Walmart announced that they will be requiring all produce suppliers to be utilizing a blockchain solution by Q3 2019. They have stated that they intend to issue the same requirement to all produce suppliers by 2020. The supply chain will also have a large impact on automotive, so much so that companies like Mercedes are spending hundreds of millions of dollars to just explore possible solutions. The automotive industry believes that there will be a large financial gain from the implementation of blockchain when it comes to recalls and even counterfeit items. It is estimated that nearly 30% of the airbags in the United States are Counterfeit. Being able to bring this number down significantly stands to save so many industries billions of dollars.
Figure: Manufacturing process in UK and USA using blockchain (Angrish et al. 2018)
Healthcare
Healthcare is one of the first places people learn about blockchain. The potential that blockchain has for impact on healthcare is astounding. It stands to not only save millions, curb counterfeiting, empower patients but most of all save lives. This will affect Electronic Health Records (EMR), insurance claims, genome research and so much more.
Airlines
Airlines are looking at blockchain as a way to replace and/or enhance registration, rebooking, vouchers, and loyalty programs. Airlines are also looking at blockchain as a way to track the maintenance and upkeep of incredibly complex devices. The number of critical components inside a modern jet airliner and the amount of traceability and audibility that goes into any work, repair, and adjustment of those complex machines is incredible and one can probably now begin to see why airline companies are making such an investment into blockchain.
Tokenized Economies (Digital Assets)
Tokens are a way to allow people to own, trade, buy, sell, track and maintain incredibly small ownership pieces of real-world assets. These tokens are issued by Blockchain Network. This tokenized fractional asset ownership is enabling many new business models.
Payment Channels
With complete and up to date micropayment and payment records, a business would foreseeably never have to stop and square up their books with any of their suppliers, vendors, manufacturers, lenders, etc. Instead, all participants in a business network could know exactly where they always stand. This would give business leaders and decision-makers greater clarity and insight into our businesses. This could also simplify the maintenance upkeep and accounting process; allowing leaders to focus on activities with a high value add or return for time spent.
Blockchain adoption & Implementation
Blockchain Adoption
Blockchain is being considered by more than half of the world’s fortune 500 companies according to a Juniper Market Research Survey. It is estimated that $2.3 billion were spent on blockchain by the end of 2018. What effect is this going to have? Blockchain is bringing us the internet of value. The uniqueness of blockchain lies in its ability to retain person to person transactions globally.
Blockchain today is often compared to the internet in the nineties. We are seeing the effects of blockchain that are similar to the effects the internet brought about in the nineties. We don’t fully understand this technology and therefore cannot fully utilize its applications. Because we have the internet, we are seeing a much faster spread of blockchain, and blockchain is one step closer to web 3.0.
Blockchain Implementation
Bitcoin used blockchain to store financial transactions, but the data can be anything from a vote in an election to an entire book. This is important when considering practical use cases for blockchain. As we know, blockchain is a distributed, immutable, highly secure database and many industries could take advantage of the transparency that blockchain provides. For example, blockchain technology could change how voting works. Blockchain would allow for voters to be 100% certain their vote is being counted. A good use case will do one of two things: It will either allow for new possibilities that have never been possible before or improve certain aspects of an existing process.
Blockchain is not always a better alternative to a database.
Blockchain has a few drawbacks that need to be considered when attempting to implement it. Starting with how new blockchain is, to the stigma of its use originating in the Dark Web. The creation of blockchain is also a mystery that tends to put people on edge. Initial Coin Offering
/Initial Token Offering scams and the misperception that blockchain is just another name for cryptocurrency are also drawbacks that aren’t technical but do impact the adoption of blockchain itself. More tangible challenges with blockchain today include the fact that blockchain technology is still changing and evolving, and best practices and recommended patterns for implementation are still being formed. There are not very many trained resources and therefore, the cost of trained resources is high. Finally, scalability is a core concern when it comes to blockchain. Blockchain prioritizes security over speed. Therefore, solutions that require high transaction speeds are not good candidates for Blockchain. Different group consensus methods beyond Proof of Work are currently being proposed to overcome current scalability limitations. Today, most major public blockchains can process 10-20 transactions per second worldwide. Data Sovereignty is another factor to consider when comparing blockchain solutions versus traditional ones. In a centralized system, all data is owned by the system owner. In scenarios where one must demonstrate they own and control the data as well as demonstrate where it is
and is not stored, blockchain may not be a good solution (although private blockchains can still
be a viable option here). Transaction times are very high in blockchain, but solutions are being investigated. One such solution includes using off chain transactions to lower transaction times.
Testimonials
IData Mining and we worked together to create our website. They were really kind and patient with us because we truly had no idea what we wanted. We had multiple meetings with their team, and we had a terrific experience throughout. We finally created a website that we adore. You won't be let down if you use IData Mining, in my opinion.
-- Solomon B. Bryan
As always, very accommodating, nothing was too much effort, and the outcome was what I had in mind. You get what you paid for with IData Mining, and the pricing is reasonable.
-- Linda G. Williams
We are quite pleased with the website IData Mining built for us. It has all the qualities we requested: it is aesthetically pleasing, orderly, user-friendly, and responsive. The CMS is simple to use and straightforward. Working with their team was a delight, and they provided guidance and support after the launch. IData Mining is something we wholeheartedly endorse to others.
-- Steve A. Hodges