spb/os-vault Public
Self-custody, multi-chain crypto wallet for macOS. One recovery phrase, six chain families, zero API keys — nothing leaves your Mac.
Swift 96%
Shell 3.4%
Makefile 0.6%
1import Foundation23public enum VersionedMessage: Equatable {4 case legacy(Message)5 case v0(MessageV0)67 static func deserialize(data: Data) throws -> Self {8 guard !data.isEmpty else {9 throw VersionedMessageError.deserializationError("Data is empty")10 }11 let prefix: UInt8 = data.first!12 let maskedPrefix = prefix & Constants.versionPrefixMask1314 if maskedPrefix == prefix {15 return try .legacy(.from(data: data))16 } else {17 return try .v0(.deserialize(serializedMessage: data))18 }19 }2021 public var value: IMessage {22 switch self {23 case let .legacy(message): return message24 case let .v0(message): return message25 }26 }2728 public mutating func setRecentBlockHash(_ blockHash: BlockHash) {29 switch self {30 case var .legacy(message):31 message.recentBlockhash = blockHash32 self = .legacy(message)33 case var .v0(messageV0):34 messageV0.recentBlockhash = blockHash35 self = .v0(messageV0)36 }37 }38}39