Skip to content

Commit 28ced94

Browse files
Merge branch 'master' into dev
2 parents 8b2cdb7 + af7c6a5 commit 28ced94

File tree

150 files changed

+4747
-347
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

150 files changed

+4747
-347
lines changed

.github/workflows/android-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
uses: actions/cache@v3
4949
with:
5050
path: build/local
51-
key: ${{ runner.os }}-${{ runner.arch }}-internal-${{ hashFiles('tools/install-dependencies') }}
51+
key: ${{ runner.os }}-${{ runner.arch }}-internal-${{ hashFiles('tools/install-dependencies') }}-${{ hashFiles('tools/dependencies-version') }}
5252

5353
- name: Install internal dependencies
5454
run: tools/install-dependencies

.github/workflows/ios-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
uses: actions/cache@v3
3737
with:
3838
path: build/local
39-
key: ${{ runner.os }}-internal-${{ hashFiles('tools/install-dependencies') }}
39+
key: ${{ runner.os }}-${{ runner.arch }}-internal-${{ hashFiles('tools/install-dependencies') }}-${{ hashFiles('tools/dependencies-version') }}
4040

4141
- name: Install internal dependencies
4242
run: |

.github/workflows/kotlin-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
uses: actions/cache@v3
5757
with:
5858
path: build/local
59-
key: ${{ runner.os }}-internal-${{ hashFiles('tools/install-dependencies') }}
59+
key: ${{ runner.os }}-${{ runner.arch }}-internal-${{ hashFiles('tools/install-dependencies') }}-${{ hashFiles('tools/dependencies-version') }}
6060

6161
- name: Install internal dependencies
6262
run: tools/install-dependencies

.github/workflows/linux-ci-sonarcloud.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
uses: actions/cache@v3
3434
with:
3535
path: build/local
36-
key: ${{ runner.os }}-internal-${{ hashFiles('tools/install-dependencies') }}
36+
key: ${{ runner.os }}-${{ runner.arch }}-internal-${{ hashFiles('tools/install-dependencies') }}-${{ hashFiles('tools/dependencies-version') }}
3737

3838
- name: Install internal dependencies
3939
run: |

.github/workflows/linux-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
uses: actions/cache@v3
2626
with:
2727
path: build/local
28-
key: ${{ runner.os }}-internal-${{ hashFiles('tools/install-sys-dependencies-linux') }}-${{ hashFiles('tools/install-dependencies') }}
28+
key: ${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('tools/install-sys-dependencies-linux') }}-internal-${{ hashFiles('tools/install-dependencies') }}-${{ hashFiles('tools/dependencies-version') }}
2929
- name: Install internal dependencies
3030
run: |
3131
tools/install-dependencies

.github/workflows/linux-sampleapp-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
uses: actions/cache@v3
2626
with:
2727
path: build/local
28-
key: ${{ runner.os }}-internal-${{ hashFiles('tools/install-sys-dependencies-linux') }}-${{ hashFiles('tools/install-dependencies') }}
28+
key: ${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('tools/install-sys-dependencies-linux') }}-internal-${{ hashFiles('tools/install-dependencies') }}-${{ hashFiles('tools/dependencies-version') }}
2929
- name: Install internal dependencies
3030
run: |
3131
tools/install-dependencies

.github/workflows/wasm-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
uses: actions/cache@v3
3030
with:
3131
path: build/local
32-
key: ${{ runner.os }}-internal-${{ hashFiles('tools/install-dependencies') }}
32+
key: ${{ runner.os }}-${{ runner.arch }}-internal-${{ hashFiles('tools/install-dependencies') }}-${{ hashFiles('tools/dependencies-version') }}
3333

3434
- name: Install internal dependencies
3535
run: tools/install-dependencies

android/app/build.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ apply plugin: 'kotlin-android'
33

44
android {
55
namespace 'com.trustwallet.core.app'
6-
compileSdkVersion 32
7-
ndkVersion '23.1.7779620'
6+
compileSdk 35
7+
ndkVersion '28.0.12674087'
88
defaultConfig {
99
applicationId "com.trustwallet.core.app"
1010
minSdkVersion 23
@@ -25,6 +25,10 @@ android {
2525
}
2626
}
2727
}
28+
compileOptions {
29+
sourceCompatibility JavaVersion.VERSION_17
30+
targetCompatibility JavaVersion.VERSION_17
31+
}
2832
}
2933

3034
dependencies {

android/app/src/androidTest/java/com/trustwallet/core/app/blockchains/aptos/TestAptosSigner.kt

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,59 @@ class TestAptosSigner {
6969
)
7070
}
7171

72+
@Test
73+
fun AptosTransactionBlindSigningWithABI() {
74+
// Successfully broadcasted: https://explorer.aptoslabs.com/txn/0x1ee2aa55382bf6b5a9f7a7f2b2066e16979489c6b2868704a2cf2c482f12b5ca/payload?network=mainnet
75+
val key =
76+
"5d996aa76b3212142792d9130796cd2e11e3c445a93118c08414df4f66bc60ec".toHexBytesInByteString()
77+
78+
val payloadJson = """
79+
{
80+
"function": "0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::controller::deposit",
81+
"type_arguments": [
82+
"0x1::aptos_coin::AptosCoin"
83+
],
84+
"arguments": [
85+
"0x4d61696e204163636f756e74",
86+
"10000000",
87+
false
88+
],
89+
"type": "entry_function_payload"
90+
}
91+
""".trimIndent()
92+
val signingInput = Aptos.SigningInput.newBuilder()
93+
.setChainId(1)
94+
.setExpirationTimestampSecs(1735902711)
95+
.setGasUnitPrice(100)
96+
.setMaxGasAmount(50000)
97+
.setSender("0x07968dab936c1bad187c60ce4082f307d030d780e91e694ae03aef16aba73f30")
98+
.setSequenceNumber(69)
99+
.setAnyEncoded(payloadJson)
100+
.setPrivateKey(key)
101+
.setAbi("""
102+
[
103+
"vector<u8>",
104+
"u64",
105+
"bool"
106+
]
107+
""".trimIndent())
108+
.build()
109+
110+
val result = AnySigner.sign(signingInput, CoinType.APTOS, Aptos.SigningOutput.parser())
111+
assertEquals(
112+
Numeric.cleanHexPrefix(Numeric.toHexString(result.rawTxn.toByteArray())),
113+
"07968dab936c1bad187c60ce4082f307d030d780e91e694ae03aef16aba73f304500000000000000029770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da30a636f6e74726f6c6c6572076465706f736974010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e00030d0c4d61696e204163636f756e74088096980000000000010050c30000000000006400000000000000f7c577670000000001"
114+
)
115+
assertEquals(
116+
Numeric.cleanHexPrefix(Numeric.toHexString(result.authenticator.signature.toByteArray())),
117+
"13dcf1636abd31996729ded4d3bf56e9c7869a7188df4f185cbcce42f0dc74b6e1b54d31703ee3babbea2ef72b3338b8c2866cec68cbd761ccc7f80910124304"
118+
)
119+
assertEquals(
120+
Numeric.cleanHexPrefix(Numeric.toHexString(result.encoded.toByteArray())),
121+
"07968dab936c1bad187c60ce4082f307d030d780e91e694ae03aef16aba73f304500000000000000029770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da30a636f6e74726f6c6c6572076465706f736974010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e00030d0c4d61696e204163636f756e74088096980000000000010050c30000000000006400000000000000f7c5776700000000010020ea526ba1710343d953461ff68641f1b7df5f23b9042ffa2d2a798d3adb3f3d6c4013dcf1636abd31996729ded4d3bf56e9c7869a7188df4f185cbcce42f0dc74b6e1b54d31703ee3babbea2ef72b3338b8c2866cec68cbd761ccc7f80910124304"
122+
)
123+
}
124+
72125
@Test
73126
fun AptosTransactionSigning() {
74127
// Successfully broadcasted https://explorer.aptoslabs.com/txn/0xb4d62afd3862116e060dd6ad9848ccb50c2bc177799819f1d29c059ae2042467?network=devnet
@@ -144,4 +197,41 @@ class TestAptosSigner {
144197
"1869b853768f0ba935d67f837a66b172dd39a60ca2315f8d4e0e669bbd35cf2502000000000000000200000000000000000000000000000000000000000000000000000000000000010d6170746f735f6163636f756e740e7472616e736665725f636f696e730107e9c192ff55cffab3963c695cff6dbf9dad6aff2bb5ac19a6415cad26a81860d9086d65655f636f696e074d6565436f696e000220b7c7d12080209e9dc14498c80200706e760363fb31782247e82cf57d1d6e5d6c081027000000000000d0070000000000006400000000000000c2276ada0000000001002062e7a6a486553b56a53e89dfae3f780693e537e5b0a7ed33290780e581ca83694030ebd7e95cb464677f411868e2cbfcb22bc01cc63cded36c459dff45e6d2f1354ae4e090e7dfbb509851c0368b343e0e5ecaf6b08e7c1b94c186530b0f7dee0d"
145198
)
146199
}
200+
201+
@Test
202+
fun AptosFungibleAssetTransfer() {
203+
// Successfully broadcasted https://explorer.aptoslabs.com/txn/0x475fc97bcba87907166a720676e1b2f5320e613fd13014df37dcf17b09ff0e98/balanceChange?network=mainnet
204+
val key =
205+
"5d996aa76b3212142792d9130796cd2e11e3c445a93118c08414df4f66bc60ec".toHexBytesInByteString()
206+
207+
val fungibleAssetTransferMessage = Aptos.FungibleAssetTransferMessage.newBuilder()
208+
.setAmount(100000000)
209+
.setTo("0x2d92d71078f11d923c2b703b95a288c0e2ae63c0d29154e6278bf8004f9b4e52")
210+
.setMetadataAddress("0x2ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12")
211+
.build()
212+
val signingInput = Aptos.SigningInput.newBuilder()
213+
.setChainId(1)
214+
.setSender("0x07968dab936c1bad187c60ce4082f307d030d780e91e694ae03aef16aba73f30")
215+
.setSequenceNumber(74)
216+
.setGasUnitPrice(100)
217+
.setMaxGasAmount(20)
218+
.setExpirationTimestampSecs(1736060099)
219+
.setFungibleAssetTransfer(fungibleAssetTransferMessage)
220+
.setPrivateKey(key)
221+
.build()
222+
223+
val result = AnySigner.sign(signingInput, CoinType.APTOS, Aptos.SigningOutput.parser())
224+
assertEquals(
225+
Numeric.cleanHexPrefix(Numeric.toHexString(result.rawTxn.toByteArray())),
226+
"07968dab936c1bad187c60ce4082f307d030d780e91e694ae03aef16aba73f304a00000000000000020000000000000000000000000000000000000000000000000000000000000001167072696d6172795f66756e6769626c655f73746f7265087472616e73666572010700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f6173736574084d657461646174610003202ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12202d92d71078f11d923c2b703b95a288c0e2ae63c0d29154e6278bf8004f9b4e520800e1f5050000000014000000000000006400000000000000c32c7a670000000001"
227+
)
228+
assertEquals(
229+
Numeric.cleanHexPrefix(Numeric.toHexString(result.authenticator.signature.toByteArray())),
230+
"2d4c5cbb710b6ef92813597054dbf8d3014529a7d85f6393f01e2a3e978c461c6aa656475b98b453ed3faebf7aa1fdd912bfc59a0c1b6fc44330793994b2e40c"
231+
)
232+
assertEquals(
233+
Numeric.cleanHexPrefix(Numeric.toHexString(result.encoded.toByteArray())),
234+
"07968dab936c1bad187c60ce4082f307d030d780e91e694ae03aef16aba73f304a00000000000000020000000000000000000000000000000000000000000000000000000000000001167072696d6172795f66756e6769626c655f73746f7265087472616e73666572010700000000000000000000000000000000000000000000000000000000000000010e66756e6769626c655f6173736574084d657461646174610003202ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12202d92d71078f11d923c2b703b95a288c0e2ae63c0d29154e6278bf8004f9b4e520800e1f5050000000014000000000000006400000000000000c32c7a6700000000010020ea526ba1710343d953461ff68641f1b7df5f23b9042ffa2d2a798d3adb3f3d6c402d4c5cbb710b6ef92813597054dbf8d3014529a7d85f6393f01e2a3e978c461c6aa656475b98b453ed3faebf7aa1fdd912bfc59a0c1b6fc44330793994b2e40c"
235+
)
236+
}
147237
}

android/app/src/androidTest/java/com/trustwallet/core/app/blockchains/ethereum/TestEthereumAbi.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,4 +209,31 @@ class TestEthereumAbiDecoder {
209209
assertEquals(decodingOutput.getTokens(0).name, "name")
210210
assertEquals(decodingOutput.getTokens(0).stringValue, "deadbeef")
211211
}
212+
213+
@Test
214+
fun testEthereumAbiGetFunctionSignature() {
215+
val abiJson = """
216+
{
217+
"constant": false,
218+
"inputs": [
219+
{
220+
"name": "_to",
221+
"type": "address"
222+
},
223+
{
224+
"name": "_value",
225+
"type": "uint256"
226+
}
227+
],
228+
"name": "transfer",
229+
"outputs": [],
230+
"payable": false,
231+
"stateMutability": "nonpayable",
232+
"type": "function"
233+
}
234+
""".trimIndent()
235+
236+
val functionSignature = wallet.core.jni.EthereumAbi.getFunctionSignature(abiJson)
237+
assertEquals(functionSignature, "transfer(address,uint256)")
238+
}
212239
}

0 commit comments

Comments
 (0)