solana-studio 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/solana/transaction.rb +11 -5
- data/lib/solana_studio.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c2ffb18603f4ee37c57d42d010090922d657450172cf5d6623e9d637f1650eb5
|
|
4
|
+
data.tar.gz: 1e50dff5950f8dd69dae20590c899930f0e6c4342173cbac93d36b8828554307
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41cba2106cced3ae803cb268ed5a5b94d46052ba20045ec50004b40e6f4745443515a015244417d0ab65558d79ff274ceffcaa1a43398d6c11bcdfc7256a3eb6
|
|
7
|
+
data.tar.gz: 444c36f828dcc16865f48cd749b5490cf541298f470b8c8f1628875f3d05df33f23e4c1295170772e6f9adb92d9aad3064bd31104b2e5b1c065b06cad4cdf8b0
|
data/lib/solana/transaction.rb
CHANGED
|
@@ -110,7 +110,10 @@ module Solana
|
|
|
110
110
|
# additional_signers: array of pubkey bytes (32-byte strings) that will sign later.
|
|
111
111
|
def serialize_partial(additional_signers: [])
|
|
112
112
|
raise "No blockhash set" unless @recent_blockhash
|
|
113
|
-
|
|
113
|
+
# A fully KEYLESS build (zero local signers, all slots filled by external
|
|
114
|
+
# additional_signers) is legitimate for multi-party coordination where the
|
|
115
|
+
# server never holds a key — only require SOME signer is accounted for.
|
|
116
|
+
raise "No signers" if @signers.empty? && additional_signers.empty?
|
|
114
117
|
raise "No instructions" if @instructions.empty?
|
|
115
118
|
|
|
116
119
|
# OPSEC-043: keep additional signers in a local — never an instance ivar.
|
|
@@ -169,12 +172,15 @@ module Solana
|
|
|
169
172
|
def collect_account_keys(additional_signers = [])
|
|
170
173
|
keys = {}
|
|
171
174
|
|
|
172
|
-
# Fee payer (first signer) is always first
|
|
173
|
-
|
|
175
|
+
# Fee payer (first signer) is always first. In a fully-keyless build there
|
|
176
|
+
# are no local @signers, so fall back to the first ADDITIONAL signer
|
|
177
|
+
# (callers order additional_signers with the fee payer first). The
|
|
178
|
+
# serialize/serialize_partial guards guarantee at least one is present.
|
|
179
|
+
fee_payer = @signers.first&.public_key_bytes || additional_signers.first
|
|
174
180
|
keys[fee_payer] = { is_signer: true, is_writable: true }
|
|
175
181
|
|
|
176
|
-
# Other signers
|
|
177
|
-
@signers
|
|
182
|
+
# Other signers (drop(1) is nil-safe when @signers is empty — keyless build)
|
|
183
|
+
@signers.drop(1).each do |signer|
|
|
178
184
|
pk = signer.public_key_bytes
|
|
179
185
|
keys[pk] ||= { is_signer: true, is_writable: false }
|
|
180
186
|
keys[pk][:is_signer] = true
|
data/lib/solana_studio.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solana-studio
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex McRitchie
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-06-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ed25519
|