Solana is an open source project implementing a new, high-performance, permissionless blockchain.
The possibility for a centralized database to process 710,000 transactions per seconds on a standard network is high if the transactions are no more than 176 bytes. Using a centralized database can also replicate itself and maintain high availability without significantly compromising that transaction rate using the distributed system technique know as Optimistic Concurrency Control.
To achieve the goals above, Solana found a way to share time when nodes cannot rely upon one-another.
Solana fees are $0.00025 per transaction, but they fluctuate over time. The fees are set by the competition for block-space, which increases when the traffic on the blockchain increases. Compared to Ethereum, Solana has 60 thousand times lower fees. This is because of the high scalability of Solana compared to Ethereum. As Solana keeps scaling better, the fees will decrease even more in the future.
One of more instructions signed by the client using one or more keypairs and executed atomically with only two possible outcome: success and failure.
A transaction contains a compact-array of digital signature of the given message. At runtime, Solana verifies that the number of signatures matches the number in the first 8 bits of the message header. Also, it verifies that each signature was signed by the private key corresponding to the correct public key.
A message contains a header, followed by a compact-array of account addresses, followed by a recent blockhash, followed by a compact-array of instructions.
An instruction contains a program id index, followed by a compact-array of account address indexes, followed by a compact-array of opaque 8-bit data.
The smallest unit of a program that a client can include in a transaction. Within its processing code, an instruction may contain one or more cross-program invocations.
The instruction’s program id specifies which program will process the instruction.
The accounts referenced by an instruction represent on-chain state and serve as both the inputs and outputs of a program.
Each instruction carries a general purpose byte array that is passed to the program along with the accounts. The contents is program specific and used to convey what operations the program should perform and any additional information.