From 505a2ef51ca2fe430e127e1641e8138a8d23a46d Mon Sep 17 00:00:00 2001 From: Maksim Zdobnikau <43750648+DelevoXDG@users.noreply.github.com> Date: Mon, 19 Feb 2024 11:24:03 +0100 Subject: [PATCH] Revert "Remove StarknetChainId (#142)" (#151) This reverts commit 34c7260e2c9515305da2d64c71e5b888cf7855b8. --- Sources/Starknet/Data/StarknetChainId.swift | 20 +++++++++++++++++++ .../Data/Transaction/TransactionHash.swift | 16 +++++++-------- .../StarknetProvider/StarknetProvider.swift | 4 ++-- .../Providers/StarknetProviderProtocol.swift | 2 +- .../Providers/ProviderTests.swift | 2 +- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/Sources/Starknet/Data/StarknetChainId.swift b/Sources/Starknet/Data/StarknetChainId.swift index e69de29bb..423256848 100644 --- a/Sources/Starknet/Data/StarknetChainId.swift +++ b/Sources/Starknet/Data/StarknetChainId.swift @@ -0,0 +1,20 @@ +import BigInt +import Foundation + +public enum StarknetChainId: String, Codable, Equatable { + case mainnet = "0x534e5f4d41494e" + case goerli = "0x534e5f474f45524c49" + case sepolia = "0x534e5f5345504f4c4941" + case integration_sepolia = "0x534e5f494e544547524154494f4e5f5345504f4c4941" + + public var feltValue: Felt { + Felt(fromHex: self.rawValue)! + } + + enum CodingKeys: String, CodingKey { + case mainnet = "0x534e5f4d41494e" + case goerli = "0x534e5f474f45524c49" + case sepolia = "0x534e5f5345504f4c4941" + case integration_sepolia = "0x534e5f494e544547524154494f4e5f5345504f4c4941" + } +} diff --git a/Sources/Starknet/Data/Transaction/TransactionHash.swift b/Sources/Starknet/Data/Transaction/TransactionHash.swift index df4289d22..d1daf84eb 100644 --- a/Sources/Starknet/Data/Transaction/TransactionHash.swift +++ b/Sources/Starknet/Data/Transaction/TransactionHash.swift @@ -11,7 +11,7 @@ public class StarknetTransactionHashCalculator { entryPointSelector: Felt, calldata: StarknetCalldata, maxFee: Felt, - chainId: Felt, + chainId: StarknetChainId, nonce: Felt ) -> Felt { StarknetCurve.pedersenOn( @@ -21,12 +21,12 @@ public class StarknetTransactionHashCalculator { entryPointSelector, StarknetCurve.pedersenOn(calldata), maxFee, - chainId, + chainId.feltValue, nonce ) } - private class func prepareCommonTransactionV3Fields(of transaction: any StarknetTransactionV3, address: Felt, chainId: Felt) -> [Felt] { + private class func prepareCommonTransactionV3Fields(of transaction: any StarknetTransactionV3, address: Felt, chainId: StarknetChainId) -> [Felt] { let transactionType = transaction.type let version = transaction.version let tip = transaction.tip @@ -45,7 +45,7 @@ public class StarknetTransactionHashCalculator { + StarknetTransactionHashCalculator.resourceBoundsForFee(resourceBounds) ), StarknetPoseidon.poseidonHash(paymasterData), - chainId, + chainId.feltValue, nonce, StarknetTransactionHashCalculator.dataAvailabilityModes( feeDataAvailabilityMode: feeDataAvailabilityMode, @@ -54,7 +54,7 @@ public class StarknetTransactionHashCalculator { ] } - public class func computeHash(of transaction: StarknetInvokeTransactionV1, chainId: Felt) -> Felt { + public class func computeHash(of transaction: StarknetInvokeTransactionV1, chainId: StarknetChainId) -> Felt { computeCommonDeprecatedTransactionHash( transactionType: transaction.type, version: transaction.version, @@ -67,7 +67,7 @@ public class StarknetTransactionHashCalculator { ) } - public class func computeHash(of transaction: StarknetInvokeTransactionV3, chainId: Felt) -> Felt { + public class func computeHash(of transaction: StarknetInvokeTransactionV3, chainId: StarknetChainId) -> Felt { let commonFields = StarknetTransactionHashCalculator.prepareCommonTransactionV3Fields( of: transaction, address: transaction.senderAddress, @@ -81,7 +81,7 @@ public class StarknetTransactionHashCalculator { ) } - public class func computeHash(of transaction: StarknetDeployAccountTransactionV1, chainId: Felt) -> Felt { + public class func computeHash(of transaction: StarknetDeployAccountTransactionV1, chainId: StarknetChainId) -> Felt { let contractAddress = StarknetContractAddressCalculator.calculateFrom( classHash: transaction.classHash, calldata: transaction.constructorCalldata, @@ -102,7 +102,7 @@ public class StarknetTransactionHashCalculator { ) } - public class func computeHash(of transaction: StarknetDeployAccountTransactionV3, chainId: Felt) -> Felt { + public class func computeHash(of transaction: StarknetDeployAccountTransactionV3, chainId: StarknetChainId) -> Felt { let contractAddress = StarknetContractAddressCalculator.calculateFrom( classHash: transaction.classHash, calldata: transaction.constructorCalldata, diff --git a/Sources/Starknet/Providers/StarknetProvider/StarknetProvider.swift b/Sources/Starknet/Providers/StarknetProvider/StarknetProvider.swift index 3aa1e0bfa..fa5958125 100644 --- a/Sources/Starknet/Providers/StarknetProvider/StarknetProvider.swift +++ b/Sources/Starknet/Providers/StarknetProvider/StarknetProvider.swift @@ -178,10 +178,10 @@ public class StarknetProvider: StarknetProviderProtocol { return result } - public func getChainId() async throws -> Felt { + public func getChainId() async throws -> StarknetChainId { let params = EmptySequence() - let result = try await makeRequest(method: .getChainId, params: params, receive: Felt.self) + let result = try await makeRequest(method: .getChainId, params: params, receive: StarknetChainId.self) return result } diff --git a/Sources/Starknet/Providers/StarknetProviderProtocol.swift b/Sources/Starknet/Providers/StarknetProviderProtocol.swift index a71ea5087..ea11fab41 100644 --- a/Sources/Starknet/Providers/StarknetProviderProtocol.swift +++ b/Sources/Starknet/Providers/StarknetProviderProtocol.swift @@ -127,7 +127,7 @@ public protocol StarknetProviderProtocol { /// Get the currently configured Starknet chain id /// /// - Returns: The Starknet chain id - func getChainId() async throws -> Felt + func getChainId() async throws -> StarknetChainId /// Simulate running a given list of transactions, and generate the execution trace /// diff --git a/Tests/StarknetTests/Providers/ProviderTests.swift b/Tests/StarknetTests/Providers/ProviderTests.swift index 4ee6e5d68..240cb1b22 100644 --- a/Tests/StarknetTests/Providers/ProviderTests.swift +++ b/Tests/StarknetTests/Providers/ProviderTests.swift @@ -51,7 +51,7 @@ final class ProviderTests: XCTestCase { func testGetChainId() async throws { let chainId = try await provider.getChainId() - XCTAssertEqual(chainId.toShortString(), "SN_GOERLI") + XCTAssertEqual(chainId, .goerli) } func testSpecVersion() async throws {