Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions contracts/deployment.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ admin = "0x0000000000000000000000000000000000000000"

# Contracts
verifier = "0x8EaB2D97Dfce405A1692a21b3ff3A172d593D319"
application-verifier = "0x0000000000000000000000000000000000000000"
set-verifier = "0x0000000000000000000000000000000000000000"
boundless-market = "0x0000000000000000000000000000000000000000"
boundless-market-impl = "0x0000000000000000000000000000000000000000"
Expand Down Expand Up @@ -57,6 +58,7 @@ admin-2 = "0xb04d1a222789a76e74168a919b43b20f66e24f0b"

# Contracts
verifier = "0x0b144e07a0826182b6b59788c34b32bfa86fb711"
application-verifier = "0x0b144e07a0826182b6b59788c34b32bfa86fb711"
set-verifier = "0x1Ab08498CfF17b9723ED67143A050c8E8c2e3104"
# deployed at block 31134603
boundless-market = "0xfd152dadc5183870710fe54f939eae3ab9f0fe82"
Expand All @@ -83,6 +85,7 @@ admin-2 = "0xb04d1a222789a76e74168a919b43b20f66e24f0b"

# Contracts
verifier = "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187"
application-verifier = "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187"
set-verifier = "0xcb9D14347b1e816831ECeE46EC199144F360B55c"
# deployed at block 8476627
boundless-market = "0xc211b581cb62e3a6d396a592bab34979e1bbba7d"
Expand Down Expand Up @@ -129,6 +132,7 @@ admin-2 = "0xb04d1a222789a76e74168a919b43b20f66e24f0b"

# Contracts
verifier = "0x0b144e07a0826182b6b59788c34b32bfa86fb711"
application-verifier = "0x0b144e07a0826182b6b59788c34b32bfa86fb711"
set-verifier = "0x1Ab08498CfF17b9723ED67143A050c8E8c2e3104"
# deployed at block 26646012
boundless-market = "0x56da3786061c82214d18e634d2817e86ad42d7ce"
Expand Down Expand Up @@ -158,6 +162,7 @@ admin = "0x0000000000000000000000000000000000000000"

# Contracts
verifier = "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187"
application-verifier = "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187"
set-verifier = "0xcb9D14347b1e816831ECeE46EC199144F360B55c"
boundless-market = "0x0000000000000000000000000000000000000000"
boundless-market-impl = "0x0000000000000000000000000000000000000000"
Expand Down Expand Up @@ -200,6 +205,7 @@ admin-2 = "0xb04d1a222789a76e74168a919b43b20f66e24f0b"

# Contracts
verifier = "0x0b144e07a0826182b6b59788c34b32bfa86fb711"
application-verifier = "0x0b144e07a0826182b6b59788c34b32bfa86fb711"
set-verifier = "0x1Ab08498CfF17b9723ED67143A050c8E8c2e3104"
# deployed at block 26370829
boundless-market = "0x7abb16522f4599481361d318b765af988bfcca8e"
Expand Down Expand Up @@ -229,6 +235,7 @@ admin = "0x08C35D3ADD5b4e914a1742f08bf00e72A85Cbe90"

# Contracts
verifier = "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187"
application-verifier = "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187"
set-verifier = "0xcb9D14347b1e816831ECeE46EC199144F360B55c"
# deployed at block 8430932
boundless-market = "0x0000000000000000000000000000000000000000"
Expand Down Expand Up @@ -275,6 +282,7 @@ admin-2 = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"

# Contracts
verifier = "0x0000000000000000000000000000000000000000"
application-verifier = "0x0000000000000000000000000000000000000000"
set-verifier = "0x0000000000000000000000000000000000000000"
boundless-market = "0x0000000000000000000000000000000000000000"
boundless-market-impl = "0x0000000000000000000000000000000000000000"
Expand Down
3 changes: 3 additions & 0 deletions contracts/scripts/Config.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ struct DeploymentConfig {
address admin;
address admin2;
address verifier;
address applicationVerifier;
address setVerifier;
address boundlessMarket;
address boundlessMarketImpl;
Expand Down Expand Up @@ -102,6 +103,8 @@ library ConfigParser {
deploymentConfig.admin = stdToml.readAddressOr(config, string.concat(chain, ".admin"), address(0));
deploymentConfig.admin2 = stdToml.readAddressOr(config, string.concat(chain, ".admin-2"), address(0));
deploymentConfig.verifier = stdToml.readAddressOr(config, string.concat(chain, ".verifier"), address(0));
deploymentConfig.applicationVerifier =
stdToml.readAddressOr(config, string.concat(chain, ".application-verifier"), address(0));
deploymentConfig.setVerifier = stdToml.readAddressOr(config, string.concat(chain, ".set-verifier"), address(0));
deploymentConfig.boundlessMarket =
stdToml.readAddressOr(config, string.concat(chain, ".boundless-market"), address(0));
Expand Down
14 changes: 12 additions & 2 deletions contracts/scripts/Deploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats {
string constant CONFIG_FILE = "contracts/deployment.toml";

IRiscZeroVerifier verifier;
IRiscZeroVerifier applicationVerifier;
address boundlessMarketAddress;
bytes32 assessorImageId;
address stakeToken;
Expand All @@ -48,6 +49,7 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats {

// Assign parsed config values to the variables
verifier = IRiscZeroVerifier(deploymentConfig.verifier);
applicationVerifier = IRiscZeroVerifier(deploymentConfig.applicationVerifier);
assessorImageId = deploymentConfig.assessorImageId;
assessorGuestUrl = deploymentConfig.assessorGuestUrl;

Expand Down Expand Up @@ -96,6 +98,7 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats {
verifierRouter.addVerifier(setVerifier.SELECTOR(), setVerifier);

verifier = IRiscZeroVerifier(verifierRouter);
applicationVerifier = verifier;
}

if (address(verifier) == address(0)) {
Expand All @@ -104,6 +107,12 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats {
console2.log("Using IRiscZeroVerifier deployed at", address(verifier));
}

if (address(applicationVerifier) == address(0)) {
revert("application verifier must be specified in deployment.toml");
} else {
console2.log("Using application IRiscZeroVerifier deployed at", address(applicationVerifier));
}

if (deploymentConfig.collateralToken == address(0)) {
// Deploy the HitPoints contract
stakeToken = address(new HitPoints(boundlessMarketOwner));
Expand All @@ -116,8 +125,9 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats {

// Deploy the Boundless market
bytes32 salt = vm.envOr("SALT", keccak256(abi.encodePacked("salt")));
address newImplementation =
address(new BoundlessMarket{salt: salt}(verifier, assessorImageId, bytes32(0), 0, stakeToken));
address newImplementation = address(
new BoundlessMarket{salt: salt}(verifier, applicationVerifier, assessorImageId, bytes32(0), 0, stakeToken)
);
console2.log("Deployed new BoundlessMarket implementation at", newImplementation);
boundlessMarketAddress = address(
new ERC1967Proxy{salt: salt}(
Expand Down
29 changes: 28 additions & 1 deletion contracts/scripts/Manage.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ contract DeployBoundlessMarket is BoundlessScriptBase {

address admin = deploymentConfig.admin.required("admin");
address verifier = deploymentConfig.verifier.required("verifier");
address applicationVerifier = deploymentConfig.verifier.required("application-verifier");
bytes32 assessorImageId = deploymentConfig.assessorImageId.required("assessor-image-id");
string memory assessorGuestUrl = deploymentConfig.assessorGuestUrl.required("assessor-guest-url");
address collateralToken = deploymentConfig.collateralToken.required("collateral-token");
Expand All @@ -75,7 +76,12 @@ contract DeployBoundlessMarket is BoundlessScriptBase {
bytes32 salt = bytes32(0);
address newImplementation = address(
new BoundlessMarket{salt: salt}(
IRiscZeroVerifier(verifier), assessorImageId, bytes32(0), 0, collateralToken
IRiscZeroVerifier(verifier),
IRiscZeroVerifier(applicationVerifier),
assessorImageId,
bytes32(0),
0,
collateralToken
)
);
address marketAddress = address(
Expand All @@ -89,6 +95,10 @@ contract DeployBoundlessMarket is BoundlessScriptBase {
// Verify the deployment
BoundlessMarket market = BoundlessMarket(marketAddress);
require(market.VERIFIER() == IRiscZeroVerifier(deploymentConfig.verifier), "verifier does not match");
require(
market.APPLICATION_VERIFIER() == IRiscZeroVerifier(deploymentConfig.applicationVerifier),
"application verifier does not match"
);
(bytes32 assessorId, string memory guestUrl) = market.imageInfo();
require(assessorId == deploymentConfig.assessorImageId, "assessor image ID does not match");
require(
Expand All @@ -105,6 +115,7 @@ contract DeployBoundlessMarket is BoundlessScriptBase {
console2.log("BoundlessMarket admin is %s", deploymentConfig.admin);
console2.log("BoundlessMarket stake token contract at %s", deploymentConfig.collateralToken);
console2.log("BoundlessMarket verifier contract at %s", deploymentConfig.verifier);
console2.log("BoundlessMarket application verifier contract at %s", deploymentConfig.applicationVerifier);
console2.log("BoundlessMarket assessor image ID %s", Strings.toHexString(uint256(assessorId), 32));
console2.log("BoundlessMarket assessor guest URL %s", guestUrl);

Expand Down Expand Up @@ -154,6 +165,7 @@ contract UpgradeBoundlessMarket is BoundlessScriptBase {
address marketAddress = deploymentConfig.boundlessMarket.required("boundless-market");
address collateralToken = deploymentConfig.collateralToken.required("collateral-token");
address verifier = deploymentConfig.verifier.required("verifier");
address applicationVerifier = deploymentConfig.verifier.required("application-verifier");
address currentImplementation = address(uint160(uint256(vm.load(marketAddress, IMPLEMENTATION_SLOT))));
uint32 deprecatedAssessorDuration = deploymentConfig.deprecatedAssessorDuration;

Expand All @@ -178,6 +190,7 @@ contract UpgradeBoundlessMarket is BoundlessScriptBase {
UpgradeOptions memory opts;
opts.constructorData = BoundlessMarketLib.encodeConstructorArgs(
IRiscZeroVerifier(verifier),
IRiscZeroVerifier(applicationVerifier),
assessorImageId,
deprecatedAssessorImageId,
deprecatedAssessorDuration,
Expand Down Expand Up @@ -228,6 +241,10 @@ contract UpgradeBoundlessMarket is BoundlessScriptBase {
upgradedMarket.VERIFIER() == IRiscZeroVerifier(deploymentConfig.verifier),
"upgraded market verifier does not match"
);
require(
upgradedMarket.APPLICATION_VERIFIER() == IRiscZeroVerifier(deploymentConfig.applicationVerifier),
"upgraded market application verifier does not match"
);
(bytes32 assessorId, string memory upgradedGuestUrl) = upgradedMarket.imageInfo();
require(assessorId == deploymentConfig.assessorImageId, "upgraded market assessor image ID does not match");
require(
Expand All @@ -248,6 +265,9 @@ contract UpgradeBoundlessMarket is BoundlessScriptBase {
console2.log("Upgraded BoundlessMarket impl contract at %s", boundlessMarketImpl);
console2.log("Upgraded BoundlessMarket collateral token contract at %s", deploymentConfig.collateralToken);
console2.log("Upgraded BoundlessMarket verifier contract at %s", deploymentConfig.verifier);
console2.log(
"Upgraded BoundlessMarket application verifier contract at %s", deploymentConfig.applicationVerifier
);
console2.log("Upgraded BoundlessMarket assessor image ID %s", Strings.toHexString(uint256(assessorId), 32));
console2.log("Upgraded BoundlessMarket assessor guest URL %s", upgradedGuestUrl);
}
Expand Down Expand Up @@ -301,6 +321,10 @@ contract RollbackBoundlessMarket is BoundlessScriptBase {
upgradedMarket.VERIFIER() == IRiscZeroVerifier(deploymentConfig.verifier),
"upgraded market verifier does not match"
);
require(
upgradedMarket.APPLICATION_VERIFIER() == IRiscZeroVerifier(deploymentConfig.applicationVerifier),
"upgraded market application verifier does not match"
);
(bytes32 assessorId, string memory upgradedGuestUrl) = upgradedMarket.imageInfo();
require(assessorId == deploymentConfig.assessorImageId, "upgraded market assessor image ID does not match");
require(
Expand All @@ -320,6 +344,9 @@ contract RollbackBoundlessMarket is BoundlessScriptBase {
console2.log("Upgraded BoundlessMarket proxy contract at %s", marketAddress);
console2.log("Upgraded BoundlessMarket collateral token contract at %s", deploymentConfig.collateralToken);
console2.log("Upgraded BoundlessMarket verifier contract at %s", deploymentConfig.verifier);
console2.log(
"Upgraded BoundlessMarket application verifier contract at %s", deploymentConfig.applicationVerifier
);
console2.log("Upgraded BoundlessMarket assessor image ID %s", Strings.toHexString(uint256(assessorId), 32));
console2.log("Upgraded BoundlessMarket assessor guest URL %s", upgradedGuestUrl);

Expand Down
48 changes: 24 additions & 24 deletions contracts/snapshots/BoundlessMarketBasicTest.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"ERC20 approve: required for depositCollateral": "45966",
"bytecode size implementation": "24570",
"bytecode size implementation": "24469",
"bytecode size proxy": "89",
"deposit: first ever deposit": "50964",
"deposit: second deposit": "33864",
"depositCollateral: 1 HP (tops up market account)": "59396",
"depositCollateral: full (drains testProver account)": "49796",
"deposit: first ever deposit": "50920",
"deposit: second deposit": "33820",
"depositCollateral: 1 HP (tops up market account)": "59352",
"depositCollateral: full (drains testProver account)": "49752",
"depositCollateralWithPermit: 1 HP (tops up market account)": "72145",
"depositCollateralWithPermit: full (drains testProver account)": "72136",
"depositTo: first ever deposit": "51046",
"depositTo: second deposit": "33946",
"depositTo: first ever deposit": "51002",
"depositTo: second deposit": "33902",
"fulfill (no journal): a batch of 8": "351707",
"fulfill: a batch of 8": "370252",
"fulfill: a locked request": "87293",
Expand All @@ -19,27 +19,27 @@
"fulfill: fulfilled by the locked prover for payment (request already fulfilled by another prover)": "82117",
"fulfillAndWithdraw: a batch of 8": "382122",
"fulfillAndWithdraw: a locked request": "99163",
"lockinRequest: base case": "147068",
"lockinRequest: with prover signature": "156752",
"priceAndFulfill: a single request": "109151",
"priceAndFulfill: a single request (smart contract signature)": "115313",
"priceAndFulfill: a single request (with selector)": "111462",
"priceAndFulfill: a single request that was not locked": "109151",
"priceAndFulfill: a single request that was not locked fulfilled by prover not in allow-list": "109151",
"priceAndFulfill: fulfill already fulfilled was locked request": "107459",
"lockinRequest: base case": "146962",
"lockinRequest: with prover signature": "156606",
"priceAndFulfill: a single request": "109067",
"priceAndFulfill: a single request (smart contract signature)": "115229",
"priceAndFulfill: a single request (with selector)": "111378",
"priceAndFulfill: a single request that was not locked": "109067",
"priceAndFulfill: a single request that was not locked fulfilled by prover not in allow-list": "109067",
"priceAndFulfill: fulfill already fulfilled was locked request": "107375",
"slash: base case": "101033",
"slash: fulfilled request after lock deadline": "80598",
"submitRequest: with maxPrice ether": "52779",
"submitRequest: without ether": "45936",
"submitRequest: with maxPrice ether": "52735",
"submitRequest: without ether": "45892",
"submitRootAndFulfill: a batch of 2 requests": "161173",
"submitRootAndFulfill: a locked request": "121988",
"submitRootAndFulfill: a locked request (locked via prover signature)": "121988",
"submitRootAndFulfill: a locked request": "121944",
"submitRootAndFulfill: a locked request (locked via prover signature)": "121944",
"submitRootAndFulfillAndWithdraw: a locked request": "133271",
"submitRootAndPriceAndFulfill: a single request": "142403",
"submitRootAndPriceAndFulfill: a single request that was not locked": "142403",
"submitRootAndPriceAndFulfill: a single request that was not locked fulfilled by prover not in allow-list": "142403",
"submitRootAndPriceAndFulfill: a single request": "142297",
"submitRootAndPriceAndFulfill: a single request that was not locked": "142297",
"submitRootAndPriceAndFulfill: a single request that was not locked fulfilled by prover not in allow-list": "142297",
"withdraw: 1 ether": "40358",
"withdraw: full balance": "40370",
"withdrawCollateral: 1 HP balance": "69117",
"withdrawCollateral: full balance": "52113"
"withdrawCollateral: 1 HP balance": "69118",
"withdrawCollateral: full balance": "52114"
}
Loading
Loading