Skip to content

Commit 696585f

Browse files
authored
chore: deploy AcrossEventEmitter contracts (#1164)
* feat: deploy AcrossEventEmitters to all EVM networks Signed-off-by: bennett <bennett@umaproject.org> * lint Signed-off-by: bennett <bennett@umaproject.org> * update Signed-off-by: bennett <bennett@umaproject.org> --------- Signed-off-by: bennett <bennett@umaproject.org>
1 parent 9f31ae4 commit 696585f

File tree

45 files changed

+3166
-1
lines changed

Some content is hidden

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

45 files changed

+3166
-1
lines changed

deploy/114_deploy_across_event_emitter.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
77
from: deployer,
88
log: true,
99
skipIfAlreadyDeployed: true,
10+
deterministicDeployment: "0x1234", // Salt for create2
1011
});
1112
await hre.run("verify:verify", { address: instance.address });
1213
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import * as zk from "zksync-web3";
2+
import { Deployer as zkDeployer } from "@matterlabs/hardhat-zksync-deploy";
3+
import { DeployFunction, DeploymentSubmission } from "hardhat-deploy/types";
4+
import { HardhatRuntimeEnvironment } from "hardhat/types";
5+
6+
const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
7+
const contractName = "AcrossEventEmitter";
8+
const { deployments } = hre;
9+
10+
const mnemonic = hre.network.config.accounts.mnemonic;
11+
const wallet = zk.Wallet.fromMnemonic(mnemonic);
12+
const deployer = new zkDeployer(hre, wallet);
13+
14+
const artifact = await deployer.loadArtifact(contractName);
15+
const constructorArgs = [];
16+
17+
const _deployment = await deployer.deploy(artifact, constructorArgs);
18+
const newAddress = _deployment.address;
19+
console.log(`New ${contractName} implementation deployed @ ${newAddress}`);
20+
21+
// Save the deployment manually because OZ's hardhat-upgrades packages bypasses hardhat-deploy.
22+
// See also: https://stackoverflow.com/questions/74870472
23+
const extendedArtifact = await deployments.getExtendedArtifact(contractName);
24+
const deployment: DeploymentSubmission = {
25+
address: newAddress,
26+
...extendedArtifact,
27+
};
28+
await deployments.save(contractName, deployment);
29+
30+
await hre.run("verify:verify", { address: newAddress, constructorArguments: constructorArgs });
31+
};
32+
33+
module.exports = func;
34+
func.tags = ["AcrossEventEmitterZk"];
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
{
2+
"address": "0xBF75133b48b0a42AB9374027902E83C5E2949034",
3+
"abi": [
4+
{
5+
"anonymous": false,
6+
"inputs": [
7+
{
8+
"indexed": false,
9+
"internalType": "bytes",
10+
"name": "data",
11+
"type": "bytes"
12+
}
13+
],
14+
"name": "MetadataEmitted",
15+
"type": "event"
16+
},
17+
{
18+
"inputs": [
19+
{
20+
"internalType": "bytes",
21+
"name": "data",
22+
"type": "bytes"
23+
}
24+
],
25+
"name": "emitData",
26+
"outputs": [],
27+
"stateMutability": "nonpayable",
28+
"type": "function"
29+
}
30+
],
31+
"transactionHash": "0x220c99382773ca52e1de8953954ea6145d8bcf59453dafe692ea08554cfc55ad",
32+
"receipt": {
33+
"to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
34+
"from": "0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D",
35+
"contractAddress": null,
36+
"transactionIndex": 5,
37+
"gasUsed": "120320",
38+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
39+
"blockHash": "0xb06419b24d8385a4cb36c5db048432a53840822986782dea4738c8801fd4f41c",
40+
"transactionHash": "0x220c99382773ca52e1de8953954ea6145d8bcf59453dafe692ea08554cfc55ad",
41+
"logs": [],
42+
"blockNumber": 392949295,
43+
"cumulativeGasUsed": "547279",
44+
"status": 1,
45+
"byzantium": true
46+
},
47+
"args": [],
48+
"numDeployments": 1,
49+
"solcInputHash": "0fc8eeef855f04b97b7baffcd5c782f7",
50+
"metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"MetadataEmitted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"emitData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"MetadataEmitted(bytes)\":{\"params\":{\"data\":\"The metadata bytes emitted\"}}},\"kind\":\"dev\",\"methods\":{\"emitData(bytes)\":{\"params\":{\"data\":\"The bytes data to emit\"}}},\"title\":\"AcrossEventEmitter\",\"version\":1},\"userdoc\":{\"events\":{\"MetadataEmitted(bytes)\":{\"notice\":\"Emitted when metadata is stored\"}},\"kind\":\"user\",\"methods\":{\"emitData(bytes)\":{\"notice\":\"Emits metadata as an event\"}},\"notice\":\"A simple contract that emits events with bytes encoded metadata\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AcrossEventEmitter.sol\":\"AcrossEventEmitter\"},\"debug\":{\"revertStrings\":\"strip\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/AcrossEventEmitter.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title AcrossEventEmitter\\n * @notice A simple contract that emits events with bytes encoded metadata\\n */\\ncontract AcrossEventEmitter {\\n /**\\n * @notice Emitted when metadata is stored\\n * @param data The metadata bytes emitted\\n */\\n event MetadataEmitted(bytes data);\\n\\n /**\\n * @notice Emits metadata as an event\\n * @param data The bytes data to emit\\n */\\n function emitData(bytes calldata data) external {\\n require(data.length > 0, \\\"Data cannot be empty\\\");\\n emit MetadataEmitted(data);\\n }\\n}\\n\",\"keccak256\":\"0xf40ca34b904d800db09e80ace2cc7331dba212373c14b32fb370298946b136b3\",\"license\":\"BUSL-1.1\"}},\"version\":1}",
51+
"bytecode": "0x608080604052346100165761012e908161001b8239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c63d836083e146023575f80fd5b3460f45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260f4576004359067ffffffffffffffff80831160f4573660238401121560f457826004013590811160f457366024828501011160f457801560f457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8360409460247fc28009f405f9b451f5155492167b1ad5ab376d991bea880cb5049e924e5b823c986020875282602088015201868601375f85828601015201168101030190a1005b5f80fdfea2646970667358221220a2c7a0f09e981d67663b05d824037d0d54404d85e8c1debac93ab835ff1790aa64736f6c63430008170033",
52+
"deployedBytecode": "0x60808060405260043610156011575f80fd5b5f3560e01c63d836083e146023575f80fd5b3460f45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260f4576004359067ffffffffffffffff80831160f4573660238401121560f457826004013590811160f457366024828501011160f457801560f457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8360409460247fc28009f405f9b451f5155492167b1ad5ab376d991bea880cb5049e924e5b823c986020875282602088015201868601375f85828601015201168101030190a1005b5f80fdfea2646970667358221220a2c7a0f09e981d67663b05d824037d0d54404d85e8c1debac93ab835ff1790aa64736f6c63430008170033",
53+
"devdoc": {
54+
"events": {
55+
"MetadataEmitted(bytes)": {
56+
"params": {
57+
"data": "The metadata bytes emitted"
58+
}
59+
}
60+
},
61+
"kind": "dev",
62+
"methods": {
63+
"emitData(bytes)": {
64+
"params": {
65+
"data": "The bytes data to emit"
66+
}
67+
}
68+
},
69+
"title": "AcrossEventEmitter",
70+
"version": 1
71+
},
72+
"userdoc": {
73+
"events": {
74+
"MetadataEmitted(bytes)": {
75+
"notice": "Emitted when metadata is stored"
76+
}
77+
},
78+
"kind": "user",
79+
"methods": {
80+
"emitData(bytes)": {
81+
"notice": "Emits metadata as an event"
82+
}
83+
},
84+
"notice": "A simple contract that emits events with bytes encoded metadata",
85+
"version": 1
86+
},
87+
"storageLayout": {
88+
"storage": [],
89+
"types": null
90+
}
91+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"language": "Solidity",
3+
"sources": {
4+
"contracts/AcrossEventEmitter.sol": {
5+
"content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.0;\n\n/**\n * @title AcrossEventEmitter\n * @notice A simple contract that emits events with bytes encoded metadata\n */\ncontract AcrossEventEmitter {\n /**\n * @notice Emitted when metadata is stored\n * @param data The metadata bytes emitted\n */\n event MetadataEmitted(bytes data);\n\n /**\n * @notice Emits metadata as an event\n * @param data The bytes data to emit\n */\n function emitData(bytes calldata data) external {\n require(data.length > 0, \"Data cannot be empty\");\n emit MetadataEmitted(data);\n }\n}\n"
6+
}
7+
},
8+
"settings": {
9+
"optimizer": {
10+
"enabled": true,
11+
"runs": 1000000
12+
},
13+
"viaIR": true,
14+
"debug": {
15+
"revertStrings": "strip"
16+
},
17+
"outputSelection": {
18+
"*": {
19+
"*": [
20+
"abi",
21+
"evm.bytecode",
22+
"evm.deployedBytecode",
23+
"evm.methodIdentifiers",
24+
"metadata",
25+
"devdoc",
26+
"userdoc",
27+
"storageLayout",
28+
"evm.gasEstimates"
29+
],
30+
"": ["ast"]
31+
}
32+
},
33+
"metadata": {
34+
"useLiteralContent": true
35+
}
36+
}
37+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
{
2+
"address": "0xBF75133b48b0a42AB9374027902E83C5E2949034",
3+
"abi": [
4+
{
5+
"anonymous": false,
6+
"inputs": [
7+
{
8+
"indexed": false,
9+
"internalType": "bytes",
10+
"name": "data",
11+
"type": "bytes"
12+
}
13+
],
14+
"name": "MetadataEmitted",
15+
"type": "event"
16+
},
17+
{
18+
"inputs": [
19+
{
20+
"internalType": "bytes",
21+
"name": "data",
22+
"type": "bytes"
23+
}
24+
],
25+
"name": "emitData",
26+
"outputs": [],
27+
"stateMutability": "nonpayable",
28+
"type": "function"
29+
}
30+
],
31+
"transactionHash": "0x3657a7769eb0b9b9164a9a73e7186ee8137ba23cdb97d3b03cacd22ad93511d3",
32+
"receipt": {
33+
"to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
34+
"from": "0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D",
35+
"contractAddress": null,
36+
"transactionIndex": 81,
37+
"gasUsed": "119108",
38+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
39+
"blockHash": "0x064d901c36cfee52f1d5a8bb9c830a6a05ff7285b0523aaf007bf54c2ae60f2f",
40+
"transactionHash": "0x3657a7769eb0b9b9164a9a73e7186ee8137ba23cdb97d3b03cacd22ad93511d3",
41+
"logs": [],
42+
"blockNumber": 37265997,
43+
"cumulativeGasUsed": "20394823",
44+
"status": 1,
45+
"byzantium": true
46+
},
47+
"args": [],
48+
"numDeployments": 1,
49+
"solcInputHash": "0fc8eeef855f04b97b7baffcd5c782f7",
50+
"metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"MetadataEmitted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"emitData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"MetadataEmitted(bytes)\":{\"params\":{\"data\":\"The metadata bytes emitted\"}}},\"kind\":\"dev\",\"methods\":{\"emitData(bytes)\":{\"params\":{\"data\":\"The bytes data to emit\"}}},\"title\":\"AcrossEventEmitter\",\"version\":1},\"userdoc\":{\"events\":{\"MetadataEmitted(bytes)\":{\"notice\":\"Emitted when metadata is stored\"}},\"kind\":\"user\",\"methods\":{\"emitData(bytes)\":{\"notice\":\"Emits metadata as an event\"}},\"notice\":\"A simple contract that emits events with bytes encoded metadata\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AcrossEventEmitter.sol\":\"AcrossEventEmitter\"},\"debug\":{\"revertStrings\":\"strip\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/AcrossEventEmitter.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title AcrossEventEmitter\\n * @notice A simple contract that emits events with bytes encoded metadata\\n */\\ncontract AcrossEventEmitter {\\n /**\\n * @notice Emitted when metadata is stored\\n * @param data The metadata bytes emitted\\n */\\n event MetadataEmitted(bytes data);\\n\\n /**\\n * @notice Emits metadata as an event\\n * @param data The bytes data to emit\\n */\\n function emitData(bytes calldata data) external {\\n require(data.length > 0, \\\"Data cannot be empty\\\");\\n emit MetadataEmitted(data);\\n }\\n}\\n\",\"keccak256\":\"0xf40ca34b904d800db09e80ace2cc7331dba212373c14b32fb370298946b136b3\",\"license\":\"BUSL-1.1\"}},\"version\":1}",
51+
"bytecode": "0x608080604052346100165761012e908161001b8239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c63d836083e146023575f80fd5b3460f45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260f4576004359067ffffffffffffffff80831160f4573660238401121560f457826004013590811160f457366024828501011160f457801560f457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8360409460247fc28009f405f9b451f5155492167b1ad5ab376d991bea880cb5049e924e5b823c986020875282602088015201868601375f85828601015201168101030190a1005b5f80fdfea2646970667358221220a2c7a0f09e981d67663b05d824037d0d54404d85e8c1debac93ab835ff1790aa64736f6c63430008170033",
52+
"deployedBytecode": "0x60808060405260043610156011575f80fd5b5f3560e01c63d836083e146023575f80fd5b3460f45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260f4576004359067ffffffffffffffff80831160f4573660238401121560f457826004013590811160f457366024828501011160f457801560f457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8360409460247fc28009f405f9b451f5155492167b1ad5ab376d991bea880cb5049e924e5b823c986020875282602088015201868601375f85828601015201168101030190a1005b5f80fdfea2646970667358221220a2c7a0f09e981d67663b05d824037d0d54404d85e8c1debac93ab835ff1790aa64736f6c63430008170033",
53+
"devdoc": {
54+
"events": {
55+
"MetadataEmitted(bytes)": {
56+
"params": {
57+
"data": "The metadata bytes emitted"
58+
}
59+
}
60+
},
61+
"kind": "dev",
62+
"methods": {
63+
"emitData(bytes)": {
64+
"params": {
65+
"data": "The bytes data to emit"
66+
}
67+
}
68+
},
69+
"title": "AcrossEventEmitter",
70+
"version": 1
71+
},
72+
"userdoc": {
73+
"events": {
74+
"MetadataEmitted(bytes)": {
75+
"notice": "Emitted when metadata is stored"
76+
}
77+
},
78+
"kind": "user",
79+
"methods": {
80+
"emitData(bytes)": {
81+
"notice": "Emits metadata as an event"
82+
}
83+
},
84+
"notice": "A simple contract that emits events with bytes encoded metadata",
85+
"version": 1
86+
},
87+
"storageLayout": {
88+
"storage": [],
89+
"types": null
90+
}
91+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"language": "Solidity",
3+
"sources": {
4+
"contracts/AcrossEventEmitter.sol": {
5+
"content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.0;\n\n/**\n * @title AcrossEventEmitter\n * @notice A simple contract that emits events with bytes encoded metadata\n */\ncontract AcrossEventEmitter {\n /**\n * @notice Emitted when metadata is stored\n * @param data The metadata bytes emitted\n */\n event MetadataEmitted(bytes data);\n\n /**\n * @notice Emits metadata as an event\n * @param data The bytes data to emit\n */\n function emitData(bytes calldata data) external {\n require(data.length > 0, \"Data cannot be empty\");\n emit MetadataEmitted(data);\n }\n}\n"
6+
}
7+
},
8+
"settings": {
9+
"optimizer": {
10+
"enabled": true,
11+
"runs": 1000000
12+
},
13+
"viaIR": true,
14+
"debug": {
15+
"revertStrings": "strip"
16+
},
17+
"outputSelection": {
18+
"*": {
19+
"*": [
20+
"abi",
21+
"evm.bytecode",
22+
"evm.deployedBytecode",
23+
"evm.methodIdentifiers",
24+
"metadata",
25+
"devdoc",
26+
"userdoc",
27+
"storageLayout",
28+
"evm.gasEstimates"
29+
],
30+
"": ["ast"]
31+
}
32+
},
33+
"metadata": {
34+
"useLiteralContent": true
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)