Solana, featured in this issue, is an open source project that implements a new, high-performance, permissionless blockchain.
What is Solana?
The Bitcoin feature is called nLocktime, and it can be used to delay transactions using block heights instead of timestamps. As a Bitcoin client, if you are not dependent on the network, you will use the block height instead of the timestamp. Block height turns out to be an example of what cryptographers call a verifiable delay function. This is a cryptographically secure way to indicate that time has passed. In Solana, we use a more fine-grained verifiable delay function, a SHA 256 hash chain, to check the ledger and reconcile consensus. With it, we implemented optimistic concurrency control and are now moving towards the theoretical limit of 710,000 transactions per second.
Solana Wallet
A crypto wallet is a device or application that stores a collection of keys that can be used to send, receive, and track the ownership of cryptocurrencies. Wallets can come in many forms. A wallet may be a directory or file in a computer file system, a piece of paper, or a specialized device called a hardware wallet. There are also various smartphone apps and computer programs that provide a user-friendly way to create and manage wallets.
A key is a securely generated private key and password and its derived public key. The private key and its corresponding public key are collectively referred to as a key pair. A wallet contains a collection of one or more key pairs and provides some means of interacting with them.
This public key (often referred to simply as PUBKEY) is called the wallet’s receiving address or just its address. Wallet addresses can be freely shared and displayed. When the other party wants to send a certain amount of cryptocurrency to the wallet, they need to know the wallet’s receiving address. According to the implementation of the blockchain, the address can also be used to view certain information about the wallet, such as checking the balance, but cannot change anything about the wallet or withdraw any tokens.
The private key that needs to be digitally signed for any transaction sends cryptocurrencies to another address or makes any changes to the wallet. Never share a private key. If someone gains access to the wallet’s private key, they can withdraw all the tokens contained in it. If the wallet’s private key is lost, any tokens sent to that wallet address are permanently lost.
usage
deployer
To deploy the program, you will need the location of the program shared object (program binaries.so)
solana Program deployment< PROGRAM_FILEPATH >
Successful deployment returns the program id of the deployer, for example:
procedure ID:3KS2k14CmtnuVv2fvYcvdrNgC94Y11WETBpMUGgXyWZL
Specify the key pair to be deployed to the specific program ID in the deploy command:
solana program deploy --program-id <KEYPAIR_FILEPATH> <PROGRAM_FILEPATH>
If the program ID is not specified on the command line, the tool first looks for the matching key pair file <PROGRAM_FILEPATH>, or internally generates a new key pair.
The matching program keypair file is located in the same directory as the program’s shared object and is named <PROGRAM_NAME>-keypair.json. The matching program key pair is automatically generated by the program builder:
./path-to-program/program.so
./path-to-program/program-keypair.json
new function
As Solana evolves, new features or patches may be introduced to change the behavior of the cluster and the way the program runs. Changes in behavior must be coordinated across the various nodes of the cluster, and if the nodes are not coordinated, then these changes can cause consensus to break down. Solana supports a mechanism called runtime features to facilitate the smooth adoption of changes.
The runtime feature is the epoch coordination event, where one or more behavioral changes for the cluster occur. Solana includes new changes that change behavior in feature gates and disables them by default. The Solana tool is then used to activate a feature that marks it as pending, and once marked as pending, the feature is activated for the next period.