bsv-sdk 0.20.0 → 0.22.0

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +82 -0
  3. data/lib/bsv/mcp/tools/broadcast_p2pkh.rb +5 -3
  4. data/lib/bsv/network/protocols/arc.rb +4 -30
  5. data/lib/bsv/network/protocols/arcade.rb +163 -0
  6. data/lib/bsv/network/protocols/chaintracks.rb +6 -3
  7. data/lib/bsv/network/protocols/jungle_bus.rb +6 -0
  8. data/lib/bsv/network/protocols.rb +1 -0
  9. data/lib/bsv/network/providers/gorilla_pool.rb +18 -18
  10. data/lib/bsv/network/util.rb +44 -0
  11. data/lib/bsv/network.rb +1 -0
  12. data/lib/bsv/transaction/chain_tracker.rb +74 -13
  13. data/lib/bsv/transaction/chain_trackers.rb +0 -10
  14. data/lib/bsv/transaction/fee_models/live_policy.rb +10 -8
  15. data/lib/bsv/version.rb +1 -1
  16. data/lib/bsv/wallet/errors.rb +65 -21
  17. data/lib/bsv/wallet/proto_wallet/validators.rb +7 -49
  18. data/lib/bsv/wallet/proto_wallet.rb +14 -1
  19. data/lib/bsv/wallet/serializer/abort_action.rb +38 -0
  20. data/lib/bsv/wallet/serializer/acquire_certificate.rb +171 -0
  21. data/lib/bsv/wallet/serializer/certificate.rb +184 -0
  22. data/lib/bsv/wallet/serializer/common.rb +207 -0
  23. data/lib/bsv/wallet/serializer/create_action_args.rb +259 -0
  24. data/lib/bsv/wallet/serializer/create_action_result.rb +85 -0
  25. data/lib/bsv/wallet/serializer/create_hmac.rb +67 -0
  26. data/lib/bsv/wallet/serializer/create_signature.rb +90 -0
  27. data/lib/bsv/wallet/serializer/decrypt.rb +60 -0
  28. data/lib/bsv/wallet/serializer/discover_by_attributes.rb +61 -0
  29. data/lib/bsv/wallet/serializer/discover_by_identity_key.rb +49 -0
  30. data/lib/bsv/wallet/serializer/discover_certificates_result.rb +39 -0
  31. data/lib/bsv/wallet/serializer/encrypt.rb +60 -0
  32. data/lib/bsv/wallet/serializer/get_header_for_height.rb +71 -0
  33. data/lib/bsv/wallet/serializer/get_height.rb +46 -0
  34. data/lib/bsv/wallet/serializer/get_network.rb +65 -0
  35. data/lib/bsv/wallet/serializer/get_public_key.rb +86 -0
  36. data/lib/bsv/wallet/serializer/get_version.rb +44 -0
  37. data/lib/bsv/wallet/serializer/internalize_action.rb +151 -0
  38. data/lib/bsv/wallet/serializer/list_actions.rb +348 -0
  39. data/lib/bsv/wallet/serializer/list_certificates.rb +124 -0
  40. data/lib/bsv/wallet/serializer/list_outputs.rb +167 -0
  41. data/lib/bsv/wallet/serializer/prove_certificate.rb +146 -0
  42. data/lib/bsv/wallet/serializer/relinquish_certificate.rb +56 -0
  43. data/lib/bsv/wallet/serializer/relinquish_output.rb +44 -0
  44. data/lib/bsv/wallet/serializer/reveal_counterparty_key_linkage.rb +108 -0
  45. data/lib/bsv/wallet/serializer/reveal_specific_key_linkage.rb +116 -0
  46. data/lib/bsv/wallet/serializer/sign_action_args.rb +94 -0
  47. data/lib/bsv/wallet/serializer/sign_action_result.rb +49 -0
  48. data/lib/bsv/wallet/serializer/status.rb +85 -0
  49. data/lib/bsv/wallet/serializer/verify_hmac.rb +67 -0
  50. data/lib/bsv/wallet/serializer/verify_signature.rb +101 -0
  51. data/lib/bsv/wallet/serializer.rb +180 -0
  52. data/lib/bsv/wallet/substrates/http_wallet_json.rb +129 -0
  53. data/lib/bsv/wallet/substrates/http_wallet_wire.rb +99 -0
  54. data/lib/bsv/wallet/wallet_wire.rb +20 -0
  55. data/lib/bsv/wallet/wallet_wire_processor.rb +61 -0
  56. data/lib/bsv/wallet/wallet_wire_transceiver.rb +61 -0
  57. data/lib/bsv/wallet/wire/calls.rb +79 -0
  58. data/lib/bsv/wallet/wire/frame.rb +181 -0
  59. data/lib/bsv/wallet/wire/reader_writer.rb +402 -0
  60. data/lib/bsv/wallet/wire/validation.rb +213 -0
  61. data/lib/bsv/wallet/wire.rb +13 -0
  62. data/lib/bsv/wallet.rb +17 -0
  63. metadata +46 -2
  64. data/lib/bsv/transaction/chain_trackers/chaintracks.rb +0 -83
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BSV
4
+ module Wallet
5
+ module Serializer
6
+ # BRC-103 serialiser for sign_action args (call byte 2).
7
+ #
8
+ # Wire layout (port of go-sdk/wallet/serializer/sign_action_args.go):
9
+ # [varint] spends count
10
+ # For each spend (sorted by input_index):
11
+ # [varint] input_index
12
+ # [int_bytes] unlocking_script
13
+ # [optional_uint32] sequence_number
14
+ # [int_bytes] reference
15
+ # [1 byte] options present flag (0=absent, 1=present)
16
+ # If options present:
17
+ # [optional_bool] accept_delayed_broadcast
18
+ # [optional_bool] return_txid_only
19
+ # [optional_bool] no_send
20
+ # [txid_slice] send_with
21
+ module SignActionArgs
22
+ module_function
23
+
24
+ # @param args [Hash]
25
+ # @return [String] binary
26
+ def serialize(args)
27
+ w = Wire::Writer.new
28
+
29
+ spends = args[:spends] || {}
30
+ w.write_varint(spends.length)
31
+ spends.keys.sort.each do |idx|
32
+ spend = spends[idx]
33
+ w.write_varint(idx)
34
+ w.write_int_bytes(spend[:unlocking_script])
35
+ w.write_optional_uint32(spend[:sequence_number])
36
+ end
37
+
38
+ w.write_int_bytes(args[:reference])
39
+
40
+ opts = args[:options]
41
+ if opts
42
+ w.write_byte(1)
43
+ w.write_optional_bool(opts[:accept_delayed_broadcast])
44
+ w.write_optional_bool(opts[:return_txid_only])
45
+ w.write_optional_bool(opts[:no_send])
46
+ w.write_txid_slice(opts[:send_with])
47
+ else
48
+ w.write_byte(0)
49
+ end
50
+
51
+ w.buf
52
+ end
53
+
54
+ # @param bytes [String] binary
55
+ # @return [Hash]
56
+ def deserialize(bytes)
57
+ r = Wire::Reader.new(bytes)
58
+
59
+ spend_count = r.read_varint
60
+ spends = {}
61
+ spend_count.times do
62
+ idx = r.read_varint
63
+ script = r.read_int_bytes
64
+ seq = r.read_optional_uint32
65
+ spend = { unlocking_script: script }
66
+ spend[:sequence_number] = seq unless seq.nil?
67
+ spends[idx] = spend
68
+ end
69
+
70
+ reference = r.read_int_bytes
71
+
72
+ options_present = r.read_byte
73
+ options = if options_present == 1
74
+ opts = {}
75
+ v = r.read_optional_bool
76
+ opts[:accept_delayed_broadcast] = v unless v.nil?
77
+ v = r.read_optional_bool
78
+ opts[:return_txid_only] = v unless v.nil?
79
+ v = r.read_optional_bool
80
+ opts[:no_send] = v unless v.nil?
81
+ sw = r.read_txid_slice
82
+ opts[:send_with] = sw unless sw.nil?
83
+ opts
84
+ end
85
+
86
+ result = { spends: spends }
87
+ result[:reference] = reference unless reference.nil? || reference.empty?
88
+ result[:options] = options unless options.nil?
89
+ result
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BSV
4
+ module Wallet
5
+ module Serializer
6
+ # BRC-103 serialiser for sign_action result (call byte 2).
7
+ #
8
+ # Wire layout (port of go-sdk/wallet/serializer/sign_action_result.go):
9
+ # [flag + 32 bytes] txid with flag byte: 0=absent, 1=present (wire-order)
10
+ # [flag + int_bytes] tx (BEEF bytes) with flag byte: 0=absent, 1=present + varint_len
11
+ # [send_with_results] varint count + txid (32 bytes) + status_byte each
12
+ module SignActionResult
13
+ module_function
14
+
15
+ # @param result [Hash]
16
+ # @return [String] binary
17
+ def serialize(result)
18
+ w = Wire::Writer.new
19
+
20
+ txid_bytes = result[:txid] ? [result[:txid]].pack('H*').reverse : nil
21
+ w.write_optional_bytes_with_flag(txid_bytes, fixed_size: 32)
22
+ w.write_optional_bytes_with_flag(result[:tx])
23
+
24
+ Common.write_send_with_results(w, result[:send_with_results])
25
+
26
+ w.buf
27
+ end
28
+
29
+ # @param bytes [String] binary
30
+ # @return [Hash]
31
+ def deserialize(bytes)
32
+ r = Wire::Reader.new(bytes)
33
+
34
+ txid_raw = r.read_optional_bytes_with_flag(fixed_size: 32)
35
+ txid_hex = txid_raw&.reverse&.unpack1('H*')
36
+ tx = r.read_optional_bytes_with_flag
37
+
38
+ send_with_results = Common.read_send_with_results(r)
39
+
40
+ result = {}
41
+ result[:txid] = txid_hex unless txid_hex.nil?
42
+ result[:tx] = tx unless tx.nil?
43
+ result[:send_with_results] = send_with_results unless send_with_results.nil?
44
+ result
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BSV
4
+ module Wallet
5
+ module Serializer
6
+ # BRC-103 serialisers for is_authenticated (call byte 23) and
7
+ # wait_for_authentication (call byte 24).
8
+ #
9
+ # Both calls take no args payload (originator is in the frame header).
10
+ #
11
+ # Result wire format:
12
+ # is_authenticated: [1 byte] 0x01 = true, 0x00 = false
13
+ # wait_for_authentication: empty payload → always returns authenticated: true
14
+ #
15
+ # Port of go-sdk/wallet/serializer/authenticated.go.
16
+ module IsAuthenticated
17
+ module Args
18
+ module_function
19
+
20
+ def serialize(_args = {})
21
+ ''.b
22
+ end
23
+
24
+ def deserialize(_bytes)
25
+ {}
26
+ end
27
+ end
28
+
29
+ module Result
30
+ module_function
31
+
32
+ # @param result [Hash] { authenticated: Boolean }
33
+ # @return [String] 1-byte binary
34
+ def serialize(result)
35
+ [result[:authenticated] ? 1 : 0].pack('C')
36
+ end
37
+
38
+ # @param bytes [String] binary — must be exactly 1 byte
39
+ # @return [Hash] { authenticated: Boolean }
40
+ def deserialize(bytes)
41
+ data = bytes.b
42
+ unless data.bytesize == 1
43
+ raise BSV::Wallet::InvalidParameterError.new(
44
+ 'is_authenticated result',
45
+ 'exactly 1 byte'
46
+ )
47
+ end
48
+
49
+ { authenticated: data.getbyte(0) == 1 }
50
+ end
51
+ end
52
+ end
53
+
54
+ module WaitForAuthentication
55
+ module Args
56
+ module_function
57
+
58
+ def serialize(_args = {})
59
+ ''.b
60
+ end
61
+
62
+ def deserialize(_bytes)
63
+ {}
64
+ end
65
+ end
66
+
67
+ module Result
68
+ module_function
69
+
70
+ # @param _result [Hash] ignored — always serialises as empty payload
71
+ # @return [String] empty binary
72
+ def serialize(_result = {})
73
+ ''.b
74
+ end
75
+
76
+ # @param _bytes [String] ignored — always returns authenticated: true
77
+ # @return [Hash] { authenticated: true }
78
+ def deserialize(_bytes = nil)
79
+ { authenticated: true }
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BSV
4
+ module Wallet
5
+ module Serializer
6
+ # BRC-103 wire codec for the +verify_hmac+ call (call byte 14).
7
+ #
8
+ # Port of go-sdk/wallet/serializer/verify_hmac.go.
9
+ module VerifyHmac
10
+ HMAC_SIZE = 32
11
+
12
+ # Args wire layout:
13
+ # [key-related params]
14
+ # [32 bytes: HMAC]
15
+ # [VarInt data_len][data bytes]
16
+ # [optional_bool seek_permission]
17
+ module Args
18
+ module_function
19
+
20
+ def serialize(args)
21
+ hmac = Common.to_binary(args[:hmac])
22
+ raise BSV::Wallet::InvalidParameterError.new('hmac', "exactly #{HMAC_SIZE} bytes") unless hmac.bytesize == HMAC_SIZE
23
+
24
+ w = BSV::Wallet::Wire::Writer.new
25
+ Common.write_key_related_params(
26
+ w,
27
+ protocol_id: args[:protocol_id],
28
+ key_id: args[:key_id],
29
+ counterparty: args[:counterparty],
30
+ privileged: args[:privileged],
31
+ privileged_reason: args[:privileged_reason]
32
+ )
33
+ w.write_bytes(hmac)
34
+ data = Common.to_binary(args[:data])
35
+ w.write_varint(data.bytesize)
36
+ w.write_bytes(data)
37
+ w.write_optional_bool(args[:seek_permission])
38
+ w.buf
39
+ end
40
+
41
+ def deserialize(bytes)
42
+ r = BSV::Wallet::Wire::Reader.new(bytes)
43
+ params = Common.read_key_related_params(r)
44
+ hmac = r.read_bytes(HMAC_SIZE)
45
+ data_len = r.read_varint
46
+ data = r.read_bytes(data_len)
47
+ seek_permission = r.read_optional_bool
48
+ params.merge(hmac: hmac, data: data, seek_permission: seek_permission)
49
+ end
50
+ end
51
+
52
+ # Result wire layout: empty — success implies valid.
53
+ module Result
54
+ module_function
55
+
56
+ def serialize(_result)
57
+ ''.b
58
+ end
59
+
60
+ def deserialize(_bytes)
61
+ { valid: true }
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BSV
4
+ module Wallet
5
+ module Serializer
6
+ # BRC-103 wire codec for the +verify_signature+ call (call byte 16).
7
+ #
8
+ # Port of go-sdk/wallet/serializer/verify_signature.go.
9
+ module VerifySignature
10
+ HASH_SIZE = 32
11
+
12
+ # Args wire layout:
13
+ # [key-related params]
14
+ # [optional_bool for_self]
15
+ # [VarInt sig_len][DER signature bytes]
16
+ # [1 byte: data-type flag — 1=data, 2=hash_to_directly_verify]
17
+ # If flag=1: [VarInt data_len][data bytes]
18
+ # If flag=2: [32 bytes: hash]
19
+ # [optional_bool seek_permission]
20
+ module Args
21
+ module_function
22
+
23
+ def serialize(args)
24
+ data = args[:data] && Common.to_binary(args[:data])
25
+ hash = args[:hash_to_directly_verify] && Common.to_binary(args[:hash_to_directly_verify])
26
+ sig = args[:signature] && Common.to_binary(args[:signature])
27
+
28
+ if data && hash
29
+ raise BSV::Wallet::InvalidParameterError.new(
30
+ 'data and hash_to_directly_verify',
31
+ 'not both provided — supply one or the other'
32
+ )
33
+ end
34
+ raise BSV::Wallet::InvalidParameterError.new('data or hash_to_directly_verify', 'present') unless data || hash
35
+ raise BSV::Wallet::InvalidParameterError.new('signature', 'present') unless sig
36
+
37
+ w = BSV::Wallet::Wire::Writer.new
38
+ Common.write_key_related_params(
39
+ w,
40
+ protocol_id: args[:protocol_id],
41
+ key_id: args[:key_id],
42
+ counterparty: args[:counterparty],
43
+ privileged: args[:privileged],
44
+ privileged_reason: args[:privileged_reason]
45
+ )
46
+
47
+ w.write_optional_bool(args[:for_self])
48
+
49
+ w.write_varint(sig.bytesize)
50
+ w.write_bytes(sig)
51
+
52
+ if data
53
+ w.write_byte(1)
54
+ w.write_varint(data.bytesize)
55
+ w.write_bytes(data)
56
+ else
57
+ w.write_byte(2)
58
+ w.write_bytes(hash)
59
+ end
60
+
61
+ w.write_optional_bool(args[:seek_permission])
62
+ w.buf
63
+ end
64
+
65
+ def deserialize(bytes)
66
+ r = BSV::Wallet::Wire::Reader.new(bytes)
67
+ params = Common.read_key_related_params(r)
68
+ for_self = r.read_optional_bool
69
+ sig_len = r.read_varint
70
+ signature = r.read_bytes(sig_len)
71
+ flag = r.read_byte
72
+ payload = case flag
73
+ when 1
74
+ len = r.read_varint
75
+ { data: r.read_bytes(len) }
76
+ when 2
77
+ { hash_to_directly_verify: r.read_bytes(HASH_SIZE) }
78
+ else
79
+ raise ArgumentError, "invalid data-type flag: #{flag}"
80
+ end
81
+ seek_permission = r.read_optional_bool
82
+ params.merge(for_self: for_self, signature: signature).merge(payload).merge(seek_permission: seek_permission)
83
+ end
84
+ end
85
+
86
+ # Result wire layout: empty — success implies valid.
87
+ module Result
88
+ module_function
89
+
90
+ def serialize(_result)
91
+ ''.b
92
+ end
93
+
94
+ def deserialize(_bytes)
95
+ { valid: true }
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,180 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BSV
4
+ module Wallet
5
+ # Registry of per-call BRC-103 binary serialisers.
6
+ #
7
+ # Each table maps a Wire::Calls constant to the module_function on the
8
+ # matching Serializer sub-module. Other developer agents populate their
9
+ # tiers in parallel — add one entry per call, one line each.
10
+ module Serializer
11
+ autoload :Common, 'bsv/wallet/serializer/common'
12
+
13
+ # Crypto tier (call bytes 8-16)
14
+ autoload :GetPublicKey, 'bsv/wallet/serializer/get_public_key'
15
+ autoload :RevealCounterpartyKeyLinkage, 'bsv/wallet/serializer/reveal_counterparty_key_linkage'
16
+ autoload :RevealSpecificKeyLinkage, 'bsv/wallet/serializer/reveal_specific_key_linkage'
17
+ autoload :Encrypt, 'bsv/wallet/serializer/encrypt'
18
+ autoload :Decrypt, 'bsv/wallet/serializer/decrypt'
19
+ autoload :CreateHmac, 'bsv/wallet/serializer/create_hmac'
20
+ autoload :VerifyHmac, 'bsv/wallet/serializer/verify_hmac'
21
+ autoload :CreateSignature, 'bsv/wallet/serializer/create_signature'
22
+ autoload :VerifySignature, 'bsv/wallet/serializer/verify_signature'
23
+
24
+ # Trivial tier (call bytes 23-28)
25
+ autoload :GetNetwork, 'bsv/wallet/serializer/get_network'
26
+ autoload :GetVersion, 'bsv/wallet/serializer/get_version'
27
+ autoload :GetHeight, 'bsv/wallet/serializer/get_height'
28
+ autoload :GetHeaderForHeight, 'bsv/wallet/serializer/get_header_for_height'
29
+ autoload :IsAuthenticated, 'bsv/wallet/serializer/status'
30
+ autoload :WaitForAuthentication, 'bsv/wallet/serializer/status'
31
+ autoload :CreateActionArgs, 'bsv/wallet/serializer/create_action_args'
32
+ autoload :CreateActionResult, 'bsv/wallet/serializer/create_action_result'
33
+ autoload :SignActionArgs, 'bsv/wallet/serializer/sign_action_args'
34
+ autoload :SignActionResult, 'bsv/wallet/serializer/sign_action_result'
35
+ autoload :AbortAction, 'bsv/wallet/serializer/abort_action'
36
+ autoload :InternalizeActionArgs, 'bsv/wallet/serializer/internalize_action'
37
+ autoload :InternalizeActionResult, 'bsv/wallet/serializer/internalize_action'
38
+ autoload :ListActionsArgs, 'bsv/wallet/serializer/list_actions'
39
+ autoload :ListActionsResult, 'bsv/wallet/serializer/list_actions'
40
+ autoload :Certificate, 'bsv/wallet/serializer/certificate'
41
+ autoload :DiscoverCertificatesResult, 'bsv/wallet/serializer/discover_certificates_result'
42
+ autoload :ListOutputs, 'bsv/wallet/serializer/list_outputs'
43
+ autoload :RelinquishOutput, 'bsv/wallet/serializer/relinquish_output'
44
+ autoload :AcquireCertificate, 'bsv/wallet/serializer/acquire_certificate'
45
+ autoload :ListCertificates, 'bsv/wallet/serializer/list_certificates'
46
+ autoload :ProveCertificate, 'bsv/wallet/serializer/prove_certificate'
47
+ autoload :RelinquishCertificate, 'bsv/wallet/serializer/relinquish_certificate'
48
+ autoload :DiscoverByIdentityKey, 'bsv/wallet/serializer/discover_by_identity_key'
49
+ autoload :DiscoverByAttributes, 'bsv/wallet/serializer/discover_by_attributes'
50
+
51
+ # Client-side: serialise outgoing args for each call.
52
+ SERIALIZE_ARGS = {
53
+ Wire::Calls::GET_PUBLIC_KEY => GetPublicKey::Args.method(:serialize),
54
+ Wire::Calls::REVEAL_COUNTERPARTY_KEY_LINKAGE => RevealCounterpartyKeyLinkage::Args.method(:serialize),
55
+ Wire::Calls::REVEAL_SPECIFIC_KEY_LINKAGE => RevealSpecificKeyLinkage::Args.method(:serialize),
56
+ Wire::Calls::ENCRYPT => Encrypt::Args.method(:serialize),
57
+ Wire::Calls::DECRYPT => Decrypt::Args.method(:serialize),
58
+ Wire::Calls::CREATE_HMAC => CreateHmac::Args.method(:serialize),
59
+ Wire::Calls::VERIFY_HMAC => VerifyHmac::Args.method(:serialize),
60
+ Wire::Calls::CREATE_SIGNATURE => CreateSignature::Args.method(:serialize),
61
+ Wire::Calls::VERIFY_SIGNATURE => VerifySignature::Args.method(:serialize),
62
+ Wire::Calls::GET_NETWORK => GetNetwork::Args.method(:serialize),
63
+ Wire::Calls::GET_VERSION => GetVersion::Args.method(:serialize),
64
+ Wire::Calls::GET_HEIGHT => GetHeight::Args.method(:serialize),
65
+ Wire::Calls::GET_HEADER_FOR_HEIGHT => GetHeaderForHeight::Args.method(:serialize),
66
+ Wire::Calls::IS_AUTHENTICATED => IsAuthenticated::Args.method(:serialize),
67
+ Wire::Calls::WAIT_FOR_AUTHENTICATION => WaitForAuthentication::Args.method(:serialize),
68
+ Wire::Calls::CREATE_ACTION => CreateActionArgs.method(:serialize),
69
+ Wire::Calls::SIGN_ACTION => SignActionArgs.method(:serialize),
70
+ Wire::Calls::ABORT_ACTION => AbortAction.method(:serialize_args),
71
+ Wire::Calls::INTERNALIZE_ACTION => InternalizeActionArgs.method(:serialize),
72
+ Wire::Calls::LIST_ACTIONS => ListActionsArgs.method(:serialize),
73
+ Wire::Calls::LIST_OUTPUTS => ListOutputs.method(:serialize_args),
74
+ Wire::Calls::RELINQUISH_OUTPUT => RelinquishOutput.method(:serialize_args),
75
+ Wire::Calls::ACQUIRE_CERTIFICATE => AcquireCertificate.method(:serialize_args),
76
+ Wire::Calls::LIST_CERTIFICATES => ListCertificates.method(:serialize_args),
77
+ Wire::Calls::PROVE_CERTIFICATE => ProveCertificate.method(:serialize_args),
78
+ Wire::Calls::RELINQUISH_CERTIFICATE => RelinquishCertificate.method(:serialize_args),
79
+ Wire::Calls::DISCOVER_BY_IDENTITY_KEY => DiscoverByIdentityKey.method(:serialize_args),
80
+ Wire::Calls::DISCOVER_BY_ATTRIBUTES => DiscoverByAttributes.method(:serialize_args)
81
+ }.freeze
82
+
83
+ # Client-side: deserialise incoming result payload for each call.
84
+ DESERIALIZE_RESULT = {
85
+ Wire::Calls::GET_PUBLIC_KEY => GetPublicKey::Result.method(:deserialize),
86
+ Wire::Calls::REVEAL_COUNTERPARTY_KEY_LINKAGE => RevealCounterpartyKeyLinkage::Result.method(:deserialize),
87
+ Wire::Calls::REVEAL_SPECIFIC_KEY_LINKAGE => RevealSpecificKeyLinkage::Result.method(:deserialize),
88
+ Wire::Calls::ENCRYPT => Encrypt::Result.method(:deserialize),
89
+ Wire::Calls::DECRYPT => Decrypt::Result.method(:deserialize),
90
+ Wire::Calls::CREATE_HMAC => CreateHmac::Result.method(:deserialize),
91
+ Wire::Calls::VERIFY_HMAC => VerifyHmac::Result.method(:deserialize),
92
+ Wire::Calls::CREATE_SIGNATURE => CreateSignature::Result.method(:deserialize),
93
+ Wire::Calls::VERIFY_SIGNATURE => VerifySignature::Result.method(:deserialize),
94
+ Wire::Calls::GET_NETWORK => GetNetwork::Result.method(:deserialize),
95
+ Wire::Calls::GET_VERSION => GetVersion::Result.method(:deserialize),
96
+ Wire::Calls::GET_HEIGHT => GetHeight::Result.method(:deserialize),
97
+ Wire::Calls::GET_HEADER_FOR_HEIGHT => GetHeaderForHeight::Result.method(:deserialize),
98
+ Wire::Calls::IS_AUTHENTICATED => IsAuthenticated::Result.method(:deserialize),
99
+ Wire::Calls::WAIT_FOR_AUTHENTICATION => WaitForAuthentication::Result.method(:deserialize),
100
+ Wire::Calls::CREATE_ACTION => CreateActionResult.method(:deserialize),
101
+ Wire::Calls::SIGN_ACTION => SignActionResult.method(:deserialize),
102
+ Wire::Calls::ABORT_ACTION => AbortAction.method(:deserialize_result),
103
+ Wire::Calls::INTERNALIZE_ACTION => InternalizeActionResult.method(:deserialize),
104
+ Wire::Calls::LIST_ACTIONS => ListActionsResult.method(:deserialize),
105
+ Wire::Calls::LIST_OUTPUTS => ListOutputs.method(:deserialize_result),
106
+ Wire::Calls::RELINQUISH_OUTPUT => RelinquishOutput.method(:deserialize_result),
107
+ Wire::Calls::ACQUIRE_CERTIFICATE => AcquireCertificate.method(:deserialize_result),
108
+ Wire::Calls::LIST_CERTIFICATES => ListCertificates.method(:deserialize_result),
109
+ Wire::Calls::PROVE_CERTIFICATE => ProveCertificate.method(:deserialize_result),
110
+ Wire::Calls::RELINQUISH_CERTIFICATE => RelinquishCertificate.method(:deserialize_result),
111
+ Wire::Calls::DISCOVER_BY_IDENTITY_KEY => DiscoverByIdentityKey.method(:deserialize_result),
112
+ Wire::Calls::DISCOVER_BY_ATTRIBUTES => DiscoverByAttributes.method(:deserialize_result)
113
+ }.freeze
114
+
115
+ # Server-side: deserialise incoming args payload for each call.
116
+ DESERIALIZE_ARGS = {
117
+ Wire::Calls::GET_PUBLIC_KEY => GetPublicKey::Args.method(:deserialize),
118
+ Wire::Calls::REVEAL_COUNTERPARTY_KEY_LINKAGE => RevealCounterpartyKeyLinkage::Args.method(:deserialize),
119
+ Wire::Calls::REVEAL_SPECIFIC_KEY_LINKAGE => RevealSpecificKeyLinkage::Args.method(:deserialize),
120
+ Wire::Calls::ENCRYPT => Encrypt::Args.method(:deserialize),
121
+ Wire::Calls::DECRYPT => Decrypt::Args.method(:deserialize),
122
+ Wire::Calls::CREATE_HMAC => CreateHmac::Args.method(:deserialize),
123
+ Wire::Calls::VERIFY_HMAC => VerifyHmac::Args.method(:deserialize),
124
+ Wire::Calls::CREATE_SIGNATURE => CreateSignature::Args.method(:deserialize),
125
+ Wire::Calls::VERIFY_SIGNATURE => VerifySignature::Args.method(:deserialize),
126
+ Wire::Calls::GET_NETWORK => GetNetwork::Args.method(:deserialize),
127
+ Wire::Calls::GET_VERSION => GetVersion::Args.method(:deserialize),
128
+ Wire::Calls::GET_HEIGHT => GetHeight::Args.method(:deserialize),
129
+ Wire::Calls::GET_HEADER_FOR_HEIGHT => GetHeaderForHeight::Args.method(:deserialize),
130
+ Wire::Calls::IS_AUTHENTICATED => IsAuthenticated::Args.method(:deserialize),
131
+ Wire::Calls::WAIT_FOR_AUTHENTICATION => WaitForAuthentication::Args.method(:deserialize),
132
+ Wire::Calls::CREATE_ACTION => CreateActionArgs.method(:deserialize),
133
+ Wire::Calls::SIGN_ACTION => SignActionArgs.method(:deserialize),
134
+ Wire::Calls::ABORT_ACTION => AbortAction.method(:deserialize_args),
135
+ Wire::Calls::INTERNALIZE_ACTION => InternalizeActionArgs.method(:deserialize),
136
+ Wire::Calls::LIST_ACTIONS => ListActionsArgs.method(:deserialize),
137
+ Wire::Calls::LIST_OUTPUTS => ListOutputs.method(:deserialize_args),
138
+ Wire::Calls::RELINQUISH_OUTPUT => RelinquishOutput.method(:deserialize_args),
139
+ Wire::Calls::ACQUIRE_CERTIFICATE => AcquireCertificate.method(:deserialize_args),
140
+ Wire::Calls::LIST_CERTIFICATES => ListCertificates.method(:deserialize_args),
141
+ Wire::Calls::PROVE_CERTIFICATE => ProveCertificate.method(:deserialize_args),
142
+ Wire::Calls::RELINQUISH_CERTIFICATE => RelinquishCertificate.method(:deserialize_args),
143
+ Wire::Calls::DISCOVER_BY_IDENTITY_KEY => DiscoverByIdentityKey.method(:deserialize_args),
144
+ Wire::Calls::DISCOVER_BY_ATTRIBUTES => DiscoverByAttributes.method(:deserialize_args)
145
+ }.freeze
146
+
147
+ # Server-side: serialise outgoing result for each call.
148
+ SERIALIZE_RESULT = {
149
+ Wire::Calls::GET_PUBLIC_KEY => GetPublicKey::Result.method(:serialize),
150
+ Wire::Calls::REVEAL_COUNTERPARTY_KEY_LINKAGE => RevealCounterpartyKeyLinkage::Result.method(:serialize),
151
+ Wire::Calls::REVEAL_SPECIFIC_KEY_LINKAGE => RevealSpecificKeyLinkage::Result.method(:serialize),
152
+ Wire::Calls::ENCRYPT => Encrypt::Result.method(:serialize),
153
+ Wire::Calls::DECRYPT => Decrypt::Result.method(:serialize),
154
+ Wire::Calls::CREATE_HMAC => CreateHmac::Result.method(:serialize),
155
+ Wire::Calls::VERIFY_HMAC => VerifyHmac::Result.method(:serialize),
156
+ Wire::Calls::CREATE_SIGNATURE => CreateSignature::Result.method(:serialize),
157
+ Wire::Calls::VERIFY_SIGNATURE => VerifySignature::Result.method(:serialize),
158
+ Wire::Calls::GET_NETWORK => GetNetwork::Result.method(:serialize),
159
+ Wire::Calls::GET_VERSION => GetVersion::Result.method(:serialize),
160
+ Wire::Calls::GET_HEIGHT => GetHeight::Result.method(:serialize),
161
+ Wire::Calls::GET_HEADER_FOR_HEIGHT => GetHeaderForHeight::Result.method(:serialize),
162
+ Wire::Calls::IS_AUTHENTICATED => IsAuthenticated::Result.method(:serialize),
163
+ Wire::Calls::WAIT_FOR_AUTHENTICATION => WaitForAuthentication::Result.method(:serialize),
164
+ Wire::Calls::CREATE_ACTION => CreateActionResult.method(:serialize),
165
+ Wire::Calls::SIGN_ACTION => SignActionResult.method(:serialize),
166
+ Wire::Calls::ABORT_ACTION => AbortAction.method(:serialize_result),
167
+ Wire::Calls::INTERNALIZE_ACTION => InternalizeActionResult.method(:serialize),
168
+ Wire::Calls::LIST_ACTIONS => ListActionsResult.method(:serialize),
169
+ Wire::Calls::LIST_OUTPUTS => ListOutputs.method(:serialize_result),
170
+ Wire::Calls::RELINQUISH_OUTPUT => RelinquishOutput.method(:serialize_result),
171
+ Wire::Calls::ACQUIRE_CERTIFICATE => AcquireCertificate.method(:serialize_result),
172
+ Wire::Calls::LIST_CERTIFICATES => ListCertificates.method(:serialize_result),
173
+ Wire::Calls::PROVE_CERTIFICATE => ProveCertificate.method(:serialize_result),
174
+ Wire::Calls::RELINQUISH_CERTIFICATE => RelinquishCertificate.method(:serialize_result),
175
+ Wire::Calls::DISCOVER_BY_IDENTITY_KEY => DiscoverByIdentityKey.method(:serialize_result),
176
+ Wire::Calls::DISCOVER_BY_ATTRIBUTES => DiscoverByAttributes.method(:serialize_result)
177
+ }.freeze
178
+ end
179
+ end
180
+ end