', async () => { await program.rpc.create({ accounts: { counterAccount: counterAccount.publicKey, user: provider.wallet.publicKey, systemProgram: anchor.web3.SystemProgram.programId, }, signers: [counterAccount] } as any)}); it("Increment counter", async () ...
第一个字段Program ID Index指定了指令的接收者,即需要处理该指令的链上程序。它不直接存放一个32字节的地址,而是将该地址放在消息主体中的账户地址数组中。该字段使用一个字节的下标指明其在数组中的位置,实现了一种空间复用。 和第一个字段类似,第二个字段是由账户地址下标组成的数组(Compact array of account ...
通过确定当前账户是处于读取还是写入状态以及要进行状态更改的操作是否有冲突,可以将账户的交易指令中对状态没有冲突的并行化允许,每条指令以Program ID来表示。而这也是为什么Solana的验证者的要求很高的原因之一,因为要求验证者的GPU/CPU能够支持SIMD(单指令多数据)以及AVX高级矢量拓展能力。 生态发展 Solana生态Landscape...
Assigned Program Id 代表账户的所有者,Allocated Data Size 表示账户已存储的数据大小,Executable 表示账户是否可执行,通常只有程序账户是可执行的。普通用户只需关注账户的地址。 通过以上内容,我们已经对 Solana 账户有了初步的了解,接下来我们来认识下 Solana Token。 Solana Token SPL-Token 代表 Solana 网络上的所...
Solana是在这个背景下产⽣的。它给⾃⼰的定位是世界上最快的⾼性能公链,它的可扩展性可以达到⽹络级别,理论上标准千兆⽹络下TPS 最⾼可达 71 万。公链领域的“不可能三⾓”问题,TPS对⽐图如下:TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括⼀...
对指令来说,指令的program id指定哪个程序处理指令;这个程序的owner指定哪个加载器(也就是程序的owner)来执行程序。例如对于用户程序,其owner都是SBF Loader,所以就是SBF程序来执行用户程序。 消息的结构和解释如下面结构体所示 注意这里的recent_blockhash,它有两个作用: ...
Solana上的程序通常在本地主机和开发网络上进行开发和测试,然后部署到测试网络或主网Beta。开发人员可以使用Solana CLI通过命令solana program deploy <程序路径>部署其程序。一旦编译成包含BPF字节码的ELF共享对象,程序将上传到指定的Solana集群。部署的程序存储在标记为可执行的账户中,账户地址作为program_id。
pub program_id: Pubkey, /// Metadata for what accounts should be passed to the instruction processor pub accounts: Vec<AccountMeta>, /// Opaque data passed to the instruction processor pub data: Vec<u8>, } Instruction在上面已经有介绍了,代表一个处理指令,包含了要处理他的程序的地址program_id...
通过确定当前账户是处于读取还是写入状态以及要进行状态更改的操作是否有冲突,可以将账户的交易指令中对状态没有冲突的并行化允许,每条指令以Program ID来表示。而这也是为什么Solana的验证者的要求很高的原因之一,因为要求验证者的GPU/CPU能够支持SIMD(单指令多数据)以及AVX高级矢量拓展能力。
公钥是可以展示给别人看的,公钥也是合约的地址。在solana上智能合约一般称为“Onchain Program”,所以公钥也叫programId。 交易签名 当交易存在相应的数字签名时,表示该账户的私钥持有人已签名并因此“授权”了该交易。 Transaction介绍 Transaction Transaction是由客户端向solana节点发起请求的单元,一个Transaction可能包含...