Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: enhancements to XMTP Nodes Registry #524

Merged
merged 16 commits into from
Feb 24, 2025
20 changes: 16 additions & 4 deletions .github/workflows/solidity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,11 @@ jobs:
- name: Restore cache
uses: actions/cache/restore@v4
with:
path: contracts
path: |
contracts/build
contracts/cache
contracts/dependencies
contracts/out
key: ${{ needs.init.outputs.cache-key }}

- name: Restore forge
Expand All @@ -130,7 +134,11 @@ jobs:
- name: Restore cache
uses: actions/cache/restore@v4
with:
path: contracts
path: |
contracts/build
contracts/cache
contracts/dependencies
contracts/out
key: ${{ needs.init.outputs.cache-key }}

- name: Restore forge
Expand Down Expand Up @@ -164,7 +172,11 @@ jobs:
- name: Restore cache
uses: actions/cache/restore@v4
with:
path: contracts
path: |
contracts/build
contracts/cache
contracts/dependencies
contracts/out
key: ${{ needs.init.outputs.cache-key }}

- name: Restore forge
Expand All @@ -181,4 +193,4 @@ jobs:
- name: abigen
uses: nickcharlton/[email protected]
with:
command: contracts/dev/generate
command: contracts/dev/generate
2 changes: 1 addition & 1 deletion contracts/dev/generate
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ function main() {
# Define contracts (pass as arguments or use a default list)
local contracts=("$@")
if [ "${#contracts[@]}" -eq 0 ]; then
contracts=("Nodes" "GroupMessages" "IdentityUpdates")
contracts=("Nodes" "GroupMessages" "IdentityUpdates" "NodesV2")
fi

# Generate bindings for each contract
Expand Down
2 changes: 1 addition & 1 deletion contracts/pkg/nodes/Nodes.go

Large diffs are not rendered by default.

4,584 changes: 4,584 additions & 0 deletions contracts/pkg/nodesv2/NodesV2.go

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion contracts/script/DeployGroupMessages.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ contract DeployGroupMessages is Script, Utils, Environment {
function run() external {
admin = vm.envAddress("XMTP_GROUP_MESSAGES_ADMIN_ADDRESS");
require(admin != address(0), "XMTP_GROUP_MESSAGES_ADMIN_ADDRESS not set");
require(admin.code.length == 0, "admin address is a contract, not an EOA");

uint256 privateKey = vm.envUint("PRIVATE_KEY");
require(privateKey != 0, "PRIVATE_KEY not set");

deployer = vm.addr(privateKey);
vm.startBroadcast(privateKey);

Expand Down
3 changes: 2 additions & 1 deletion contracts/script/DeployIdentityUpdates.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ contract DeployIdentityUpdates is Script, Utils, Environment {
function run() external {
admin = vm.envAddress("XMTP_IDENTITY_UPDATES_ADMIN_ADDRESS");
require(admin != address(0), "XMTP_IDENTITY_UPDATES_ADMIN_ADDRESS not set");
require(admin.code.length == 0, "admin address is a contract, not an EOA");

uint256 privateKey = vm.envUint("PRIVATE_KEY");
require(privateKey != 0, "PRIVATE_KEY not set");

deployer = vm.addr(privateKey);
vm.startBroadcast(privateKey);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ contract Deployer is Script {
function run() public {
vm.startBroadcast();
new Nodes();

vm.broadcast();
}
}
}
51 changes: 51 additions & 0 deletions contracts/script/DeployNodeRegistryV2.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;

import {Script, console} from "forge-std/src/Script.sol";
import {Environment} from "./utils/Environment.sol";
import {Utils} from "./utils/Utils.sol";
import "src/interfaces/INodes.sol";
import "src/NodesV2.sol";

contract DeployXMTPNodeRegistry is Script, Environment, Utils {
NodesV2 nodes;

address admin;
address deployer;

function run() public {
admin = vm.envAddress("XMTP_NODE_REGISTRY_ADMIN_ADDRESS");
require(admin != address(0), "XMTP_NODE_REGISTRY_ADMIN_ADDRESS not set");

uint256 privateKey = vm.envUint("PRIVATE_KEY");
require(privateKey != 0, "PRIVATE_KEY not set");

deployer = vm.addr(privateKey);
vm.startBroadcast(privateKey);

nodes = new NodesV2(admin);
require(address(nodes) != address(0), "Nodes deployment failed");

vm.stopBroadcast();

_serializeDeploymentData();
}

function _serializeDeploymentData() internal {
string memory parent_object = "parent object";
string memory addresses = "addresses";

string memory addressesOutput;

addressesOutput = vm.serializeAddress(addresses, "XMTPNodeRegistryDeployer", deployer);
addressesOutput = vm.serializeAddress(addresses, "XMTPNodeRegistryInitialAdmin", admin);
addressesOutput = vm.serializeAddress(addresses, "XMTPNodeRegistry", address(nodes));

string memory finalJson;
finalJson = vm.serializeString(parent_object, addresses, addressesOutput);
finalJson = vm.serializeUint(parent_object, "deploymentBlock", block.number);
finalJson = vm.serializeUint(parent_object, "latestUpgradeBlock", block.number);

writeOutput(finalJson, XMTP_NODE_REGISTRY_OUTPUT_JSON);
}
}
1 change: 1 addition & 0 deletions contracts/script/utils/Environment.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ import "forge-std/src/Script.sol";
contract Environment is Script {
string public constant XMTP_GROUP_MESSAGES_OUTPUT_JSON = "GroupMessages";
string public constant XMTP_IDENTITY_UPDATES_OUTPUT_JSON = "IdentityUpdates";
string public constant XMTP_NODE_REGISTRY_OUTPUT_JSON = "XMTPNodeRegistry";
}
2 changes: 1 addition & 1 deletion contracts/src/Nodes.sol
Original file line number Diff line number Diff line change
Expand Up @@ -147,4 +147,4 @@ contract Nodes is ERC721, Ownable {
address owner = _ownerOf(tokenId);
return owner != address(0);
}
}
}
Loading
Loading