Skip to content

Commit cef93f6

Browse files
committed
Merge branch 'master' into release-naga-test-2026-01-22
2 parents e42ec90 + 19c219f commit cef93f6

File tree

80 files changed

+2049
-1127
lines changed

Some content is hidden

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

80 files changed

+2049
-1127
lines changed

.github/workflows/rust-lit-node-group-unit-and-integration-tests.yml

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
lit_node_unit_tests:
5555
needs: build-if-needed
5656
runs-on: warp-ubuntu-latest-x64-8x # change to LargeRunner to run on github. Change to self-hosted to run on our own runner. Change to buildjet-8vcpu-ubuntu-2204 to run on buildjet with 8 cpus
57-
timeout-minutes: 40
57+
timeout-minutes: 30
5858

5959
services:
6060
anvil:
@@ -105,7 +105,62 @@ jobs:
105105
timeout-minutes: 45
106106
strategy:
107107
matrix:
108-
partition: [1, 2, 3]
108+
partition: [1, 2, 3, 4]
109+
110+
services:
111+
anvil:
112+
image: litptcl/anvil-lit:latest
113+
ports:
114+
- 8545:8545
115+
- 8549:8549
116+
credentials:
117+
username: ${{ vars.DOCKERHUB_USERNAME }}
118+
password: ${{ secrets.DOCKERHUB_TOKEN }}
119+
120+
steps:
121+
- name: Install deps
122+
working-directory: ${{ github.workspace }}
123+
run: sudo apt-get update && sudo apt-get install -y zstd libudev-dev libsqlite3-dev cmake protobuf-compiler
124+
- name: Checkout lit-assets
125+
uses: actions/checkout@v6
126+
with:
127+
submodules: recursive
128+
- uses: de-vri-es/setup-git-credentials@v2
129+
with:
130+
credentials: https://glitch003:${{secrets.READ_ONLY_PAT}}@github.com/
131+
- name: Use Node.js
132+
uses: WarpBuilds/setup-node@v4
133+
with:
134+
node-version: 18.17.0
135+
cache: npm
136+
cache-dependency-path: ${{ github.workspace }}/blockchain/contracts/package-lock.json
137+
- name: Install dependencies for blockchain/contracts
138+
working-directory: ${{ github.workspace }}/blockchain/contracts
139+
run: npm install
140+
- name: Run npx hardhat compile for blockchain/contracts
141+
working-directory: ${{ github.workspace }}/blockchain/contracts
142+
run: npx hardhat compile
143+
- run: mkdir -p ~/.cargo/bin
144+
- name: Install nextest
145+
run: curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C "${CARGO_HOME:-$HOME/.cargo}/bin"
146+
- name: Download archive
147+
uses: WarpBuilds/cache@v1
148+
with:
149+
path: rust/lit-node/lit-node/nextest-archive.tar.zst
150+
key: nextest-archive-${{ github.sha }}-lit-actions|testing
151+
- name: Unzip archive so that we can get the lit_node binary
152+
run: zstd -d -c nextest-archive.tar.zst | tar xf -
153+
- name: Setup local files for testing
154+
run: make setup-local-files
155+
- name: Run acceptance, component and integration tests.
156+
run: "~/.cargo/bin/cargo-nextest nextest run --archive-file nextest-archive.tar.zst --final-status-level pass --profile integration-tests -E 'test(/^acceptance|^component|^integration|^sdk/) - test(/long/)' --partition count:${{ matrix.partition }}/4 --nocapture --"
157+
158+
159+
# after the standard build is done, run the other integration tests
160+
lit_node_other_tests:
161+
needs: build-if-needed
162+
runs-on: warp-ubuntu-latest-x64-8x # change to LargeRunner to run on github. Change to self-hosted to run on our own runner. Change to buildjet-8vcpu-ubuntu-2204 to run on buildjet with 8 cpus
163+
timeout-minutes: 45
109164

110165
services:
111166
anvil:
@@ -162,14 +217,16 @@ jobs:
162217
cargo nextest run --final-status-level pass --no-capture --
163218
working-directory: ${{github.workspace}}/rust/lit-node/shiva
164219
- name: Run acceptance, component and integration tests.
165-
run: "~/.cargo/bin/cargo-nextest nextest run --archive-file nextest-archive.tar.zst --final-status-level pass --profile integration-tests -E 'test(/^acceptance|^component|^integration|^sdk/) - test(/long/)' --partition count:${{ matrix.partition }}/3 --nocapture --"
220+
run: "~/.cargo/bin/cargo-nextest nextest run --archive-file nextest-archive.tar.zst --final-status-level pass --profile integration-tests -E 'test(/^edge/) - test(/long/)' --nocapture --"
221+
166222

167223
# AND together the results
168224
check_status:
169225
needs:
170226
[
171227
lit_node_unit_tests,
172228
lit_node_integration_tests,
229+
lit_node_other_tests,
173230
]
174231
runs-on: ubuntu-latest
175232
steps:

blockchain/contracts/abis/PKPHelper.abi

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,19 @@
568568
"stateMutability": "view",
569569
"type": "function"
570570
},
571+
{
572+
"inputs": [],
573+
"name": "getPubkeyRouterAddress",
574+
"outputs": [
575+
{
576+
"internalType": "address",
577+
"name": "",
578+
"type": "address"
579+
}
580+
],
581+
"stateMutability": "view",
582+
"type": "function"
583+
},
571584
{
572585
"inputs": [
573586
{

blockchain/contracts/contracts/lit-node/PKPHelper.sol

Lines changed: 59 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Base64 } from "@openzeppelin/contracts/utils/Base64.sol";
99
import { IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
1010
import { ContractResolver } from "../lit-core/ContractResolver.sol";
1111
import { PKPNFTFacet } from "./PKPNFT/PKPNFTFacet.sol";
12+
import { PubkeyRouterViewsFacet } from "./PubkeyRouter/PubkeyRouterViewsFacet.sol";
1213
import "@openzeppelin/contracts/access/AccessControl.sol";
1314
import "hardhat/console.sol";
1415

@@ -108,6 +109,13 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
108109
);
109110
}
110111

112+
function getPubkeyRouterAddress() public view returns (address) {
113+
return
114+
contractResolver.getContract(
115+
contractResolver.PUB_KEY_ROUTER_CONTRACT(),
116+
env
117+
);
118+
}
111119
/* ========== MUTATIVE FUNCTIONS ========== */
112120

113121
function mintNextAndAddAuthMethods(
@@ -198,7 +206,7 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
198206
}
199207
}
200208

201-
address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
209+
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
202210
.getEthAddress(tokenId);
203211

204212
// add the pkp eth address as a permitted address
@@ -248,6 +256,10 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
248256
value: msg.value
249257
}(params.keyType, params.keySetId);
250258

259+
PKPPermissionsFacet pkpPermissions = PKPPermissionsFacet(
260+
getPkpPermissionsAddress()
261+
);
262+
251263
// sanity checking array lengths
252264
require(
253265
params.permittedIpfsCIDs.length ==
@@ -278,24 +290,22 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
278290
// permit the action
279291
if (params.permittedIpfsCIDs.length != 0) {
280292
for (uint256 i = 0; i < params.permittedIpfsCIDs.length; i++) {
281-
PKPPermissionsFacet(getPkpPermissionsAddress())
282-
.addPermittedAction(
283-
tokenId,
284-
params.permittedIpfsCIDs[i],
285-
params.permittedIpfsCIDScopes[i]
286-
);
293+
pkpPermissions.addPermittedAction(
294+
tokenId,
295+
params.permittedIpfsCIDs[i],
296+
params.permittedIpfsCIDScopes[i]
297+
);
287298
}
288299
}
289300

290301
// permit the address
291302
if (params.permittedAddresses.length != 0) {
292303
for (uint256 i = 0; i < params.permittedAddresses.length; i++) {
293-
PKPPermissionsFacet(getPkpPermissionsAddress())
294-
.addPermittedAddress(
295-
tokenId,
296-
params.permittedAddresses[i],
297-
params.permittedAddressesScopes[i]
298-
);
304+
pkpPermissions.addPermittedAddress(
305+
tokenId,
306+
params.permittedAddresses[i],
307+
params.permittedAddressesScopes[i]
308+
);
299309
}
300310
}
301311

@@ -306,25 +316,24 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
306316
i < params.permittedAuthMethodTypes.length;
307317
i++
308318
) {
309-
PKPPermissionsFacet(getPkpPermissionsAddress())
310-
.addPermittedAuthMethod(
311-
tokenId,
312-
LibPKPPermissionsStorage.AuthMethod(
313-
params.permittedAuthMethodTypes[i],
314-
params.permittedAuthMethodIds[i],
315-
params.permittedAuthMethodPubkeys[i]
316-
),
317-
params.permittedAuthMethodScopes[i]
318-
);
319+
pkpPermissions.addPermittedAuthMethod(
320+
tokenId,
321+
LibPKPPermissionsStorage.AuthMethod(
322+
params.permittedAuthMethodTypes[i],
323+
params.permittedAuthMethodIds[i],
324+
params.permittedAuthMethodPubkeys[i]
325+
),
326+
params.permittedAuthMethodScopes[i]
327+
);
319328
}
320329
}
321330

322-
address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
331+
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
323332
.getEthAddress(tokenId);
324333

325334
// add the pkp eth address as a permitted address
326335
if (params.addPkpEthAddressAsPermittedAddress) {
327-
PKPPermissionsFacet(getPkpPermissionsAddress()).addPermittedAddress(
336+
pkpPermissions.addPermittedAddress(
328337
tokenId,
329338
pkpEthAddress,
330339
new uint256[](0)
@@ -442,6 +451,10 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
442451
claimMaterial.stakingContractAddress
443452
);
444453

454+
PKPPermissionsFacet pkpPermissions = PKPPermissionsFacet(
455+
getPkpPermissionsAddress()
456+
);
457+
445458
require(
446459
authMethodData.permittedIpfsCIDs.length ==
447460
authMethodData.permittedIpfsCIDScopes.length,
@@ -475,12 +488,11 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
475488
i < authMethodData.permittedIpfsCIDs.length;
476489
i++
477490
) {
478-
PKPPermissionsFacet(getPkpPermissionsAddress())
479-
.addPermittedAction(
480-
tokenId,
481-
authMethodData.permittedIpfsCIDs[i],
482-
authMethodData.permittedIpfsCIDScopes[i]
483-
);
491+
pkpPermissions.addPermittedAction(
492+
tokenId,
493+
authMethodData.permittedIpfsCIDs[i],
494+
authMethodData.permittedIpfsCIDScopes[i]
495+
);
484496
}
485497
}
486498

@@ -491,12 +503,11 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
491503
i < authMethodData.permittedAddresses.length;
492504
i++
493505
) {
494-
PKPPermissionsFacet(getPkpPermissionsAddress())
495-
.addPermittedAddress(
496-
tokenId,
497-
authMethodData.permittedAddresses[i],
498-
authMethodData.permittedAddressScopes[i]
499-
);
506+
pkpPermissions.addPermittedAddress(
507+
tokenId,
508+
authMethodData.permittedAddresses[i],
509+
authMethodData.permittedAddressScopes[i]
510+
);
500511
}
501512
}
502513

@@ -507,25 +518,24 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
507518
i < authMethodData.permittedAuthMethodTypes.length;
508519
i++
509520
) {
510-
PKPPermissionsFacet(getPkpPermissionsAddress())
511-
.addPermittedAuthMethod(
512-
tokenId,
513-
LibPKPPermissionsStorage.AuthMethod(
514-
authMethodData.permittedAuthMethodTypes[i],
515-
authMethodData.permittedAuthMethodIds[i],
516-
authMethodData.permittedAuthMethodPubkeys[i]
517-
),
518-
authMethodData.permittedAuthMethodScopes[i]
519-
);
521+
pkpPermissions.addPermittedAuthMethod(
522+
tokenId,
523+
LibPKPPermissionsStorage.AuthMethod(
524+
authMethodData.permittedAuthMethodTypes[i],
525+
authMethodData.permittedAuthMethodIds[i],
526+
authMethodData.permittedAuthMethodPubkeys[i]
527+
),
528+
authMethodData.permittedAuthMethodScopes[i]
529+
);
520530
}
521531
}
522532

523-
address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
533+
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
524534
.getEthAddress(tokenId);
525535

526536
// add the pkp eth address as a permitted address
527537
if (authMethodData.addPkpEthAddressAsPermittedAddress) {
528-
PKPPermissionsFacet(getPkpPermissionsAddress()).addPermittedAddress(
538+
pkpPermissions.addPermittedAddress(
529539
tokenId,
530540
pkpEthAddress,
531541
new uint256[](0)

blockchain/contracts/contracts/lit-node/PKPHelperV2.sol

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
55
import { IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
66
import { ContractResolver } from "../lit-core/ContractResolver.sol";
77
import { PKPNFTFacet } from "./PKPNFT/PKPNFTFacet.sol";
8+
import { PubkeyRouterViewsFacet } from "./PubkeyRouter/PubkeyRouterViewsFacet.sol";
89
import "hardhat/console.sol";
910

1011
import { LibPKPPermissionsStorage } from "./PKPPermissions/LibPKPPermissionsStorage.sol";
@@ -73,6 +74,13 @@ contract PKPHelperV2 is Ownable, IERC721Receiver {
7374
);
7475
}
7576

77+
function getPubkeyRouterAddress() public view returns (address) {
78+
return
79+
contractResolver.getContract(
80+
contractResolver.PUB_KEY_ROUTER_CONTRACT(),
81+
env
82+
);
83+
}
7684
/* ========== MUTATIVE FUNCTIONS ========== */
7785

7886
function mintNextAndAddAuthMethods(
@@ -89,6 +97,10 @@ contract PKPHelperV2 is Ownable, IERC721Receiver {
8997
value: msg.value
9098
}(params.keyType, params.keySetId);
9199

100+
PKPPermissionsFacet pkpPermissions = PKPPermissionsFacet(
101+
getPkpPermissionsAddress()
102+
);
103+
92104
require(
93105
params.permittedAuthMethodTypes.length ==
94106
params.permittedAuthMethodIds.length,
@@ -112,25 +124,24 @@ contract PKPHelperV2 is Ownable, IERC721Receiver {
112124
i < params.permittedAuthMethodTypes.length;
113125
i++
114126
) {
115-
PKPPermissionsFacet(getPkpPermissionsAddress())
116-
.addPermittedAuthMethod(
117-
tokenId,
118-
LibPKPPermissionsStorage.AuthMethod(
119-
params.permittedAuthMethodTypes[i],
120-
params.permittedAuthMethodIds[i],
121-
params.permittedAuthMethodPubkeys[i]
122-
),
123-
params.permittedAuthMethodScopes[i]
124-
);
127+
pkpPermissions.addPermittedAuthMethod(
128+
tokenId,
129+
LibPKPPermissionsStorage.AuthMethod(
130+
params.permittedAuthMethodTypes[i],
131+
params.permittedAuthMethodIds[i],
132+
params.permittedAuthMethodPubkeys[i]
133+
),
134+
params.permittedAuthMethodScopes[i]
135+
);
125136
}
126137
}
127138

128-
address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
139+
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
129140
.getEthAddress(tokenId);
130141

131142
// add the pkp eth address as a permitted address
132143
if (params.addPkpEthAddressAsPermittedAddress) {
133-
PKPPermissionsFacet(getPkpPermissionsAddress()).addPermittedAddress(
144+
pkpPermissions.addPermittedAddress(
134145
tokenId,
135146
pkpEthAddress,
136147
params.pkpEthAddressScopes

0 commit comments

Comments
 (0)