Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e1a2004
Make datil always available, even if not used.
GTC6244 Jan 14, 2026
87f67f2
Add debugging.
GTC6244 Jan 14, 2026
ba1088b
Merge branch 'keysets' into feature/node-4940-fix-keyset-ci-times
GTC6244 Jan 14, 2026
04adc15
Merge branch 'keysets' into feature/node-4940-fix-keyset-ci-times
GTC6244 Jan 14, 2026
1c4c6cf
update build.rs
GTC6244 Jan 14, 2026
98ae805
Merge branch 'keysets' into feature/node-4940-fix-keyset-ci-times
GTC6244 Jan 15, 2026
4604455
debugging
GTC6244 Jan 15, 2026
bf52eb3
Test / Refactor / Discover - anvil cache issues.
GTC6244 Jan 15, 2026
4396137
rename to edge testing, add a matrix
GTC6244 Jan 15, 2026
eff1a70
clippy !
GTC6244 Jan 16, 2026
e971f41
test splitting out the edge related tests.
GTC6244 Jan 16, 2026
a539ddb
cargo fmt
GTC6244 Jan 16, 2026
40f5349
config update (nomenclature, mainly)
GTC6244 Jan 16, 2026
70d12b7
Use an updated version of datil contracts that can be properly cleare…
GTC6244 Jan 16, 2026
3c516d9
remove unit test partitioning
GTC6244 Jan 16, 2026
96affc1
add debugging info
GTC6244 Jan 16, 2026
4ce481e
Add keyset into ClientBuilder.
GTC6244 Jan 16, 2026
9d49481
force deploy for the child lit action function.
GTC6244 Jan 16, 2026
944a0fb
first pass
GTC6244 Jan 17, 2026
6dba9bc
Updates to make testing easier
GTC6244 Jan 18, 2026
b937f90
Simplifications of datil vs normal PKPs.
GTC6244 Jan 18, 2026
43f0a1d
Refactor to search for a local test configuration file, instead of du…
GTC6244 Jan 18, 2026
6ea94f0
Remove duplicate tests.
GTC6244 Jan 18, 2026
a9cfdad
ensure datil wallets get funded.
GTC6244 Jan 18, 2026
2f9599c
clean up datil PKP functions.
GTC6244 Jan 18, 2026
d872158
Revert the proper funding amount :)
GTC6244 Jan 18, 2026
02a710c
Feature/node 4948 fix broken pkppermissions helper lookup (#81)
GTC6244 Jan 21, 2026
2a94c5d
Update rust/lit-node/lit-node-testnet/src/lib.rs
GTC6244 Jan 21, 2026
97e76ef
Update rust/lit-node/lit-node/live_testnet_b.toml
GTC6244 Jan 21, 2026
06ef782
Update rust/lit-node/lit-node/live_testnet_sample.toml
GTC6244 Jan 21, 2026
445b599
Merge branch 'keysets' into feature/node-4771-add-test-chains-for-non…
GTC6244 Jan 21, 2026
08491c8
fix merge issues
GTC6244 Jan 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions blockchain/contracts/abis/ContractResolver.abi
Original file line number Diff line number Diff line change
Expand Up @@ -388,19 +388,6 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PUB_KEY_ROUTER_VIEWS_CONTRACT",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RATE_LIMIT_NFT_CONTRACT",
Expand Down
13 changes: 13 additions & 0 deletions blockchain/contracts/abis/PKPHelper.abi
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,19 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPubkeyRouterAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
Expand Down
2 changes: 0 additions & 2 deletions blockchain/contracts/contracts/lit-core/ContractResolver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ contract ContractResolver is AccessControl {
bytes32 public constant LIT_TOKEN_CONTRACT = keccak256("LIT_TOKEN");
bytes32 public constant PUB_KEY_ROUTER_CONTRACT =
keccak256("PUB_KEY_ROUTER"); // 0xb1f79813bc7630a52ae948bc99781397e409d0dd3521953bf7d8d7a2db6147f7
bytes32 public constant PUB_KEY_ROUTER_VIEWS_CONTRACT =
keccak256("PUB_KEY_ROUTER_VIEWS"); // 0x4c3f3e2f3e5d3e6f0c8e4f6b7a1e8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8091
bytes32 public constant PKP_NFT_CONTRACT = keccak256("PKP_NFT"); // 0xb7b4fde9944d3c13e9a78835431c33a5084d90a7f0c73def76d7886315fe87b0
bytes32 public constant RATE_LIMIT_NFT_CONTRACT =
keccak256("RATE_LIMIT_NFT"); // 0xb931b2719aeb2a65a5035fa0a190bfdc4c8622ce8cbff7a3d1ab42531fb1a918
Expand Down
108 changes: 59 additions & 49 deletions blockchain/contracts/contracts/lit-node/PKPHelper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Base64 } from "@openzeppelin/contracts/utils/Base64.sol";
import { IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import { ContractResolver } from "../lit-core/ContractResolver.sol";
import { PKPNFTFacet } from "./PKPNFT/PKPNFTFacet.sol";
import { PubkeyRouterViewsFacet } from "./PubkeyRouter/PubkeyRouterViewsFacet.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
import "hardhat/console.sol";

Expand Down Expand Up @@ -108,6 +109,13 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
);
}

function getPubkeyRouterAddress() public view returns (address) {
return
contractResolver.getContract(
contractResolver.PUB_KEY_ROUTER_CONTRACT(),
env
);
}
/* ========== MUTATIVE FUNCTIONS ========== */

function mintNextAndAddAuthMethods(
Expand Down Expand Up @@ -198,7 +206,7 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
}
}

address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
.getEthAddress(tokenId);

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

PKPPermissionsFacet pkpPermissions = PKPPermissionsFacet(
getPkpPermissionsAddress()
);

// sanity checking array lengths
require(
params.permittedIpfsCIDs.length ==
Expand Down Expand Up @@ -278,24 +290,22 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
// permit the action
if (params.permittedIpfsCIDs.length != 0) {
for (uint256 i = 0; i < params.permittedIpfsCIDs.length; i++) {
PKPPermissionsFacet(getPkpPermissionsAddress())
.addPermittedAction(
tokenId,
params.permittedIpfsCIDs[i],
params.permittedIpfsCIDScopes[i]
);
pkpPermissions.addPermittedAction(
tokenId,
params.permittedIpfsCIDs[i],
params.permittedIpfsCIDScopes[i]
);
}
}

// permit the address
if (params.permittedAddresses.length != 0) {
for (uint256 i = 0; i < params.permittedAddresses.length; i++) {
PKPPermissionsFacet(getPkpPermissionsAddress())
.addPermittedAddress(
tokenId,
params.permittedAddresses[i],
params.permittedAddressesScopes[i]
);
pkpPermissions.addPermittedAddress(
tokenId,
params.permittedAddresses[i],
params.permittedAddressesScopes[i]
);
}
}

Expand All @@ -306,25 +316,24 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
i < params.permittedAuthMethodTypes.length;
i++
) {
PKPPermissionsFacet(getPkpPermissionsAddress())
.addPermittedAuthMethod(
tokenId,
LibPKPPermissionsStorage.AuthMethod(
params.permittedAuthMethodTypes[i],
params.permittedAuthMethodIds[i],
params.permittedAuthMethodPubkeys[i]
),
params.permittedAuthMethodScopes[i]
);
pkpPermissions.addPermittedAuthMethod(
tokenId,
LibPKPPermissionsStorage.AuthMethod(
params.permittedAuthMethodTypes[i],
params.permittedAuthMethodIds[i],
params.permittedAuthMethodPubkeys[i]
),
params.permittedAuthMethodScopes[i]
);
}
}

address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
.getEthAddress(tokenId);

// add the pkp eth address as a permitted address
if (params.addPkpEthAddressAsPermittedAddress) {
PKPPermissionsFacet(getPkpPermissionsAddress()).addPermittedAddress(
pkpPermissions.addPermittedAddress(
tokenId,
pkpEthAddress,
new uint256[](0)
Expand Down Expand Up @@ -442,6 +451,10 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
claimMaterial.stakingContractAddress
);

PKPPermissionsFacet pkpPermissions = PKPPermissionsFacet(
getPkpPermissionsAddress()
);

require(
authMethodData.permittedIpfsCIDs.length ==
authMethodData.permittedIpfsCIDScopes.length,
Expand Down Expand Up @@ -475,12 +488,11 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
i < authMethodData.permittedIpfsCIDs.length;
i++
) {
PKPPermissionsFacet(getPkpPermissionsAddress())
.addPermittedAction(
tokenId,
authMethodData.permittedIpfsCIDs[i],
authMethodData.permittedIpfsCIDScopes[i]
);
pkpPermissions.addPermittedAction(
tokenId,
authMethodData.permittedIpfsCIDs[i],
authMethodData.permittedIpfsCIDScopes[i]
);
}
}

Expand All @@ -491,12 +503,11 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
i < authMethodData.permittedAddresses.length;
i++
) {
PKPPermissionsFacet(getPkpPermissionsAddress())
.addPermittedAddress(
tokenId,
authMethodData.permittedAddresses[i],
authMethodData.permittedAddressScopes[i]
);
pkpPermissions.addPermittedAddress(
tokenId,
authMethodData.permittedAddresses[i],
authMethodData.permittedAddressScopes[i]
);
}
}

Expand All @@ -507,25 +518,24 @@ contract PKPHelper is Ownable, IERC721Receiver, AccessControl {
i < authMethodData.permittedAuthMethodTypes.length;
i++
) {
PKPPermissionsFacet(getPkpPermissionsAddress())
.addPermittedAuthMethod(
tokenId,
LibPKPPermissionsStorage.AuthMethod(
authMethodData.permittedAuthMethodTypes[i],
authMethodData.permittedAuthMethodIds[i],
authMethodData.permittedAuthMethodPubkeys[i]
),
authMethodData.permittedAuthMethodScopes[i]
);
pkpPermissions.addPermittedAuthMethod(
tokenId,
LibPKPPermissionsStorage.AuthMethod(
authMethodData.permittedAuthMethodTypes[i],
authMethodData.permittedAuthMethodIds[i],
authMethodData.permittedAuthMethodPubkeys[i]
),
authMethodData.permittedAuthMethodScopes[i]
);
}
}

address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
.getEthAddress(tokenId);

// add the pkp eth address as a permitted address
if (authMethodData.addPkpEthAddressAsPermittedAddress) {
PKPPermissionsFacet(getPkpPermissionsAddress()).addPermittedAddress(
pkpPermissions.addPermittedAddress(
tokenId,
pkpEthAddress,
new uint256[](0)
Expand Down
35 changes: 23 additions & 12 deletions blockchain/contracts/contracts/lit-node/PKPHelperV2.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import { ContractResolver } from "../lit-core/ContractResolver.sol";
import { PKPNFTFacet } from "./PKPNFT/PKPNFTFacet.sol";
import { PubkeyRouterViewsFacet } from "./PubkeyRouter/PubkeyRouterViewsFacet.sol";
import "hardhat/console.sol";

import { LibPKPPermissionsStorage } from "./PKPPermissions/LibPKPPermissionsStorage.sol";
Expand Down Expand Up @@ -73,6 +74,13 @@ contract PKPHelperV2 is Ownable, IERC721Receiver {
);
}

function getPubkeyRouterAddress() public view returns (address) {
return
contractResolver.getContract(
contractResolver.PUB_KEY_ROUTER_CONTRACT(),
env
);
}
/* ========== MUTATIVE FUNCTIONS ========== */

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

PKPPermissionsFacet pkpPermissions = PKPPermissionsFacet(
getPkpPermissionsAddress()
);

require(
params.permittedAuthMethodTypes.length ==
params.permittedAuthMethodIds.length,
Expand All @@ -112,25 +124,24 @@ contract PKPHelperV2 is Ownable, IERC721Receiver {
i < params.permittedAuthMethodTypes.length;
i++
) {
PKPPermissionsFacet(getPkpPermissionsAddress())
.addPermittedAuthMethod(
tokenId,
LibPKPPermissionsStorage.AuthMethod(
params.permittedAuthMethodTypes[i],
params.permittedAuthMethodIds[i],
params.permittedAuthMethodPubkeys[i]
),
params.permittedAuthMethodScopes[i]
);
pkpPermissions.addPermittedAuthMethod(
tokenId,
LibPKPPermissionsStorage.AuthMethod(
params.permittedAuthMethodTypes[i],
params.permittedAuthMethodIds[i],
params.permittedAuthMethodPubkeys[i]
),
params.permittedAuthMethodScopes[i]
);
}
}

address pkpEthAddress = PKPPermissionsFacet(getPkpPermissionsAddress())
address pkpEthAddress = PubkeyRouterViewsFacet(getPubkeyRouterAddress())
.getEthAddress(tokenId);

// add the pkp eth address as a permitted address
if (params.addPkpEthAddressAsPermittedAddress) {
PKPPermissionsFacet(getPkpPermissionsAddress()).addPermittedAddress(
pkpPermissions.addPermittedAddress(
tokenId,
pkpEthAddress,
params.pkpEthAddressScopes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ contract PKPPermissionsFacet is ERC2771 {
function getRouterAddress() public view returns (address) {
return
s().contractResolver.getContract(
s().contractResolver.PUB_KEY_ROUTER_VIEWS_CONTRACT(),
s().contractResolver.PUB_KEY_ROUTER_CONTRACT(),
s().env
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,6 @@ describe('DomainWalletRegistry', function () {
pkpPermissionsContract: pkpPermissionsFacet,
pkpNftMetadataContract: pkpNftMetadata,
pubkeyRouterContract: pubkeyRouter,
pubkeyRouterViewsContract: pubkeyRouterViews,
hdKeyDeriverContract: keyDeriver,
stakingContract: stakingFacet,
tokenContract: token,
Expand Down
1 change: 0 additions & 1 deletion blockchain/contracts/test/lit-node/PKPHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@ describe('PKPHelper', function () {
pkpPermissionsContract: pkpPermissions,
hdKeyDeriverContract: keyDeriver,
pubkeyRouterContract: router,
pubkeyRouterViewsContract: routerViews,
});

// Mint enough tokens for the deployer
Expand Down
1 change: 0 additions & 1 deletion blockchain/contracts/test/lit-node/PKPNFT.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@ describe('PKPNFT', function () {
pkpNftMetadataContract: pkpNftMetadata,
hdKeyDeriverContract: keyDeriver,
pubkeyRouterContract: router,
pubkeyRouterViewsContract: routerViews,
stylusContractP256: supportsArbitrumStylus(hre.network.config)
? hre.network.config.stylusContractsForTests.p256
: undefined,
Expand Down
1 change: 0 additions & 1 deletion blockchain/contracts/test/lit-node/PKPPermissions.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ describe('PKPPermissions', function () {
pkpPermissionsContract: pkpPermissions,
hdKeyDeriverContract: keyDeriver,
pubkeyRouterContract: router,
pubkeyRouterViewsContract: routerViews,
});

await stakingKeySetsFacet.setKeySet({
Expand Down
1 change: 0 additions & 1 deletion blockchain/contracts/test/lit-node/Staking.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,6 @@ describe('Staking', function () {
stakingContract: stakingValidatorFacet,
pkpContract: pkpNft,
pubkeyRouterContract: routerContract,
pubkeyRouterViewsContract: routerViews,
});

await stakingKeySetsFacet.setKeySet({
Expand Down
10 changes: 0 additions & 10 deletions blockchain/contracts/utils/contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ export async function setContractResolver(
domainWalletRegistryContract,
hdKeyDeriverContract,
pubkeyRouterContract,
pubkeyRouterViewsContract,
stylusContractP256,
stylusContractK256,
}: {
Expand All @@ -67,7 +66,6 @@ export async function setContractResolver(
domainWalletRegistryContract?: DomainWalletRegistryFacet;
hdKeyDeriverContract?: KeyDeriver;
pubkeyRouterContract?: PubkeyRouterFacet;
pubkeyRouterViewsContract?: PubkeyRouterViewsFacet;
stylusContractP256?: string;
stylusContractK256?: string;
}
Expand Down Expand Up @@ -144,14 +142,6 @@ export async function setContractResolver(
);
}

if (pubkeyRouterViewsContract) {
await contractResolver.setContract(
await contractResolver.PUB_KEY_ROUTER_VIEWS_CONTRACT(),
env,
await pubkeyRouterViewsContract.getAddress()
);
}

if (backupRecoveryContract) {
await contractResolver.setContract(
await contractResolver.BACKUP_RECOVERY_CONTRACT(),
Expand Down
Loading