Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
e8b8d225
Unverified
Commit
e8b8d225
authored
Sep 26, 2023
by
mergify[bot]
Committed by
GitHub
Sep 26, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into dependabot/npm_and_yarn/typescript-eslint/parser-6.7.3
parents
8656ba19
aa1bef3d
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
342 additions
and
60 deletions
+342
-60
package.json
package.json
+1
-1
Deploy.s.sol
packages/contracts-bedrock/scripts/Deploy.s.sol
+117
-38
Deployer.sol
packages/contracts-bedrock/scripts/Deployer.sol
+4
-0
pnpm-lock.yaml
pnpm-lock.yaml
+209
-18
consensus_poller.go
proxyd/consensus_poller.go
+6
-2
rewriter.go
proxyd/rewriter.go
+5
-1
No files found.
package.json
View file @
e8b8d225
...
...
@@ -65,7 +65,7 @@
"
markdownlint
"
:
"
^0.31.0
"
,
"
markdownlint-cli2
"
:
"
0.4.0
"
,
"
mocha
"
:
"
^10.2.0
"
,
"
nx
"
:
"
16.
8.1
"
,
"
nx
"
:
"
16.
9.0
"
,
"
nyc
"
:
"
^15.1.0
"
,
"
patch-package
"
:
"
^8.0.0
"
,
"
prettier
"
:
"
^2.8.0
"
,
...
...
packages/contracts-bedrock/scripts/Deploy.s.sol
View file @
e8b8d225
...
...
@@ -6,6 +6,10 @@ import { Script } from "forge-std/Script.sol";
import { console2 as console } from "forge-std/console2.sol";
import { stdJson } from "forge-std/StdJson.sol";
import { Safe } from "safe-contracts/Safe.sol";
import { SafeProxyFactory } from "safe-contracts/proxies/SafeProxyFactory.sol";
import { Enum as SafeOps } from "safe-contracts/common/Enum.sol";
import { Deployer } from "./Deployer.sol";
import { DeployConfig } from "./DeployConfig.s.sol";
...
...
@@ -70,6 +74,9 @@ contract Deploy is Deployer {
deployProxies();
deployImplementations();
deploySafe();
transferProxyAdminOwnership(); // to the Safe
initializeDisputeGameFactory();
initializeSystemConfig();
initializeL1StandardBridge();
...
...
@@ -83,7 +90,6 @@ contract Deploy is Deployer {
setAlphabetFaultGameImplementation();
setCannonFaultGameImplementation();
transferProxyAdminOwnership();
transferDisputeGameFactoryOwnership();
}
...
...
@@ -136,7 +142,7 @@ contract Deploy is Deployer {
deployDisputeGameFactoryProxy();
deployProtocolVersionsProxy();
transferAddressManagerOwnership();
transferAddressManagerOwnership();
// to the ProxyAdmin
}
/// @notice Deploy all of the implementations
...
...
@@ -155,6 +161,40 @@ contract Deploy is Deployer {
deployProtocolVersions();
}
// @notice Gets the address of the SafeProxyFactory and Safe singleton for use in deploying a new GnosisSafe.
function _getSafeFactory() internal returns (SafeProxyFactory safeProxyFactory_, Safe safeSingleton_) {
// These are they standard create2 deployed contracts. First we'll check if they are deployed,
// if not we'll deploy new ones, though not at these addresses.
address safeProxyFactory = 0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2;
address safeSingleton = 0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552;
safeProxyFactory.code.length == 0
? safeProxyFactory_ = new SafeProxyFactory()
: safeProxyFactory_ = SafeProxyFactory(safeProxyFactory);
safeSingleton.code.length == 0 ? safeSingleton_ = new Safe() : safeSingleton_ = Safe(payable(safeSingleton_));
save("SafeProxyFactory", address(safeProxyFactory_));
save("SafeSingleton", address(safeSingleton_));
}
/// @notice Deploy the Safe
function deploySafe() public broadcast returns (address addr_) {
(SafeProxyFactory safeProxyFactory, Safe safeSingleton) = _getSafeFactory();
address[] memory signers = new address[](1);
signers[0] = msg.sender;
bytes memory initData = abi.encodeWithSelector(
Safe.setup.selector, signers, 1, address(0), hex"", address(0), address(0), 0, address(0)
);
address safe = address(safeProxyFactory.createProxyWithNonce(address(safeSingleton), initData, block.timestamp));
save("SystemOwnerSafe", address(safe));
console.log("New SystemOwnerSafe deployed at %s", address(safe));
addr_ = safe;
}
/// @notice Deploy the AddressManager
function deployAddressManager() public broadcast returns (address addr_) {
AddressManager manager = new AddressManager();
...
...
@@ -517,16 +557,47 @@ contract Deploy is Deployer {
require(addressManager.owner() == proxyAdmin);
}
/// @notice Make a call from the Safe contract to an arbitrary address with arbitrary data
function _callViaSafe(address _target, bytes memory _data) internal {
Safe safe = Safe(mustGetAddress("SystemOwnerSafe"));
// This is the signature format used the caller is also the signer.
bytes memory signature = abi.encodePacked(uint256(uint160(msg.sender)), bytes32(0), uint8(1));
safe.execTransaction({
to: _target,
value: 0,
data: _data,
operation: SafeOps.Operation.Call,
safeTxGas: 0,
baseGas: 0,
gasPrice: 0,
gasToken: address(0),
refundReceiver: payable(address(0)),
signatures: signature
});
}
/// @notice Call from the Safe contract to the Proxy Admin's upgrade and call method
function _upgradeAndCallViaSafe(address _proxy, address _implementation, bytes memory _innerCallData) internal {
Safe safe = Safe(mustGetAddress("SystemOwnerSafe"));
address proxyAdmin = mustGetAddress("ProxyAdmin");
bytes memory data =
abi.encodeCall(ProxyAdmin.upgradeAndCall, (payable(_proxy), _implementation, _innerCallData));
_callViaSafe({ _target: proxyAdmin, _data: data });
}
/// @notice Initialize the DisputeGameFactory
function initializeDisputeGameFactory() public onlyDevnet broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address disputeGameFactoryProxy = mustGetAddress("DisputeGameFactoryProxy");
address disputeGameFactory = mustGetAddress("DisputeGameFactory");
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(disputeGameFactoryProxy),
_implementation: disputeGameFactory,
_
d
ata: abi.encodeCall(DisputeGameFactory.initialize, (msg.sender))
_
innerCallD
ata: abi.encodeCall(DisputeGameFactory.initialize, (msg.sender))
});
string memory version = DisputeGameFactory(disputeGameFactoryProxy).version();
...
...
@@ -535,17 +606,16 @@ contract Deploy is Deployer {
/// @notice Initialize the SystemConfig
function initializeSystemConfig() public broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address systemConfigProxy = mustGetAddress("SystemConfigProxy");
address systemConfig = mustGetAddress("SystemConfig");
bytes32 batcherHash = bytes32(uint256(uint160(cfg.batchSenderAddress())));
uint256 startBlock = cfg.systemConfigStartBlock();
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(systemConfigProxy),
_implementation: systemConfig,
_
d
ata: abi.encodeCall(
_
innerCallD
ata: abi.encodeCall(
SystemConfig.initialize,
(
cfg.finalSystemOwner(),
...
...
@@ -611,14 +681,19 @@ contract Deploy is Deployer {
uint256 proxyType = uint256(proxyAdmin.proxyType(l1StandardBridgeProxy));
if (proxyType != uint256(ProxyAdmin.ProxyType.CHUGSPLASH)) {
proxyAdmin.setProxyType(l1StandardBridgeProxy, ProxyAdmin.ProxyType.CHUGSPLASH);
_callViaSafe({
_target: address(proxyAdmin),
_data: abi.encodeCall(ProxyAdmin.setProxyType, (l1StandardBridgeProxy, ProxyAdmin.ProxyType.CHUGSPLASH))
});
}
require(uint256(proxyAdmin.proxyType(l1StandardBridgeProxy)) == uint256(ProxyAdmin.ProxyType.CHUGSPLASH));
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(l1StandardBridgeProxy),
_implementation: l1StandardBridge,
_data: abi.encodeCall(L1StandardBridge.initialize, (L1CrossDomainMessenger(l1CrossDomainMessengerProxy)))
_innerCallData: abi.encodeCall(
L1StandardBridge.initialize, (L1CrossDomainMessenger(l1CrossDomainMessengerProxy))
)
});
string memory version = L1StandardBridge(payable(l1StandardBridgeProxy)).version();
...
...
@@ -638,15 +713,14 @@ contract Deploy is Deployer {
/// @notice Initialize the L1ERC721Bridge
function initializeL1ERC721Bridge() public broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address l1ERC721BridgeProxy = mustGetAddress("L1ERC721BridgeProxy");
address l1ERC721Bridge = mustGetAddress("L1ERC721Bridge");
address l1CrossDomainMessengerProxy = mustGetAddress("L1CrossDomainMessengerProxy");
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(l1ERC721BridgeProxy),
_implementation: l1ERC721Bridge,
_
d
ata: abi.encodeCall(L1ERC721Bridge.initialize, (L1CrossDomainMessenger(l1CrossDomainMessengerProxy)))
_
innerCallD
ata: abi.encodeCall(L1ERC721Bridge.initialize, (L1CrossDomainMessenger(l1CrossDomainMessengerProxy)))
});
L1ERC721Bridge bridge = L1ERC721Bridge(l1ERC721BridgeProxy);
...
...
@@ -659,15 +733,14 @@ contract Deploy is Deployer {
/// @notice Ininitialize the OptimismMintableERC20Factory
function initializeOptimismMintableERC20Factory() public broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address optimismMintableERC20FactoryProxy = mustGetAddress("OptimismMintableERC20FactoryProxy");
address optimismMintableERC20Factory = mustGetAddress("OptimismMintableERC20Factory");
address l1StandardBridgeProxy = mustGetAddress("L1StandardBridgeProxy");
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(optimismMintableERC20FactoryProxy),
_implementation: optimismMintableERC20Factory,
_
d
ata: abi.encodeCall(OptimismMintableERC20Factory.initialize, (l1StandardBridgeProxy))
_
innerCallD
ata: abi.encodeCall(OptimismMintableERC20Factory.initialize, (l1StandardBridgeProxy))
});
OptimismMintableERC20Factory factory = OptimismMintableERC20Factory(optimismMintableERC20FactoryProxy);
...
...
@@ -687,24 +760,32 @@ contract Deploy is Deployer {
uint256 proxyType = uint256(proxyAdmin.proxyType(l1CrossDomainMessengerProxy));
if (proxyType != uint256(ProxyAdmin.ProxyType.RESOLVED)) {
proxyAdmin.setProxyType(l1CrossDomainMessengerProxy, ProxyAdmin.ProxyType.RESOLVED);
_callViaSafe({
_target: address(proxyAdmin),
_data: abi.encodeCall(ProxyAdmin.setProxyType, (l1CrossDomainMessengerProxy, ProxyAdmin.ProxyType.RESOLVED))
});
}
require(uint256(proxyAdmin.proxyType(l1CrossDomainMessengerProxy)) == uint256(ProxyAdmin.ProxyType.RESOLVED));
string memory contractName = "OVM_L1CrossDomainMessenger";
string memory implName = proxyAdmin.implementationName(l1CrossDomainMessenger);
if (keccak256(bytes(contractName)) != keccak256(bytes(implName))) {
proxyAdmin.setImplementationName(l1CrossDomainMessengerProxy, contractName);
_callViaSafe({
_target: address(proxyAdmin),
_data: abi.encodeCall(ProxyAdmin.setImplementationName, (l1CrossDomainMessengerProxy, contractName))
});
}
require(
keccak256(bytes(proxyAdmin.implementationName(l1CrossDomainMessengerProxy)))
== keccak256(bytes(contractName))
);
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(l1CrossDomainMessengerProxy),
_implementation: l1CrossDomainMessenger,
_data: abi.encodeCall(L1CrossDomainMessenger.initialize, (OptimismPortal(payable(optimismPortalProxy))))
_innerCallData: abi.encodeCall(
L1CrossDomainMessenger.initialize, (OptimismPortal(payable(optimismPortalProxy)))
)
});
L1CrossDomainMessenger messenger = L1CrossDomainMessenger(l1CrossDomainMessengerProxy);
...
...
@@ -719,14 +800,13 @@ contract Deploy is Deployer {
/// @notice Initialize the L2OutputOracle
function initializeL2OutputOracle() public broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address l2OutputOracleProxy = mustGetAddress("L2OutputOracleProxy");
address l2OutputOracle = mustGetAddress("L2OutputOracle");
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(l2OutputOracleProxy),
_implementation: l2OutputOracle,
_
d
ata: abi.encodeCall(
_
innerCallD
ata: abi.encodeCall(
L2OutputOracle.initialize,
(
cfg.l2OutputOracleStartingBlockNumber(),
...
...
@@ -757,7 +837,6 @@ contract Deploy is Deployer {
/// @notice Initialize the OptimismPortal
function initializeOptimismPortal() public broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address optimismPortalProxy = mustGetAddress("OptimismPortalProxy");
address optimismPortal = mustGetAddress("OptimismPortal");
address l2OutputOracleProxy = mustGetAddress("L2OutputOracleProxy");
...
...
@@ -768,10 +847,10 @@ contract Deploy is Deployer {
console.log("Portal guardian has no code: %s", guardian);
}
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(optimismPortalProxy),
_implementation: optimismPortal,
_
d
ata: abi.encodeCall(
_
innerCallD
ata: abi.encodeCall(
OptimismPortal.initialize,
(L2OutputOracle(l2OutputOracleProxy), guardian, SystemConfig(systemConfigProxy), false)
)
...
...
@@ -788,7 +867,6 @@ contract Deploy is Deployer {
}
function initializeProtocolVersions() public onlyTestnetOrDevnet broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address protocolVersionsProxy = mustGetAddress("ProtocolVersionsProxy");
address protocolVersions = mustGetAddress("ProtocolVersions");
...
...
@@ -796,10 +874,10 @@ contract Deploy is Deployer {
uint256 requiredProtocolVersion = cfg.requiredProtocolVersion();
uint256 recommendedProtocolVersion = cfg.recommendedProtocolVersion();
proxyAdmin.upgradeAndCall
({
_upgradeAndCallViaSafe
({
_proxy: payable(protocolVersionsProxy),
_implementation: protocolVersions,
_
d
ata: abi.encodeCall(
_
innerCallD
ata: abi.encodeCall(
ProtocolVersions.initialize,
(
finalSystemOwner,
...
...
@@ -822,10 +900,10 @@ contract Deploy is Deployer {
function transferProxyAdminOwnership() public broadcast {
ProxyAdmin proxyAdmin = ProxyAdmin(mustGetAddress("ProxyAdmin"));
address owner = proxyAdmin.owner();
address
finalSystemOwner = cfg.finalSystemOwner(
);
if (owner !=
finalSystemOwner
) {
proxyAdmin.transferOwnership(
finalSystemOwner
);
console.log("ProxyAdmin ownership transferred to
: %s", finalSystemOwner
);
address
safe = mustGetAddress("SystemOwnerSafe"
);
if (owner !=
safe
) {
proxyAdmin.transferOwnership(
safe
);
console.log("ProxyAdmin ownership transferred to
Safe at: %s", safe
);
}
}
...
...
@@ -833,10 +911,11 @@ contract Deploy is Deployer {
function transferDisputeGameFactoryOwnership() public onlyDevnet broadcast {
DisputeGameFactory disputeGameFactory = DisputeGameFactory(mustGetAddress("DisputeGameFactoryProxy"));
address owner = disputeGameFactory.owner();
address finalSystemOwner = cfg.finalSystemOwner();
if (owner != finalSystemOwner) {
disputeGameFactory.transferOwnership(finalSystemOwner);
console.log("DisputeGameFactory ownership transferred to: %s", finalSystemOwner);
address safe = mustGetAddress("SystemOwnerSafe");
if (owner != safe) {
disputeGameFactory.transferOwnership(safe);
console.log("DisputeGameFactory ownership transferred to Safe at: %s", safe);
}
}
...
...
packages/contracts-bedrock/scripts/Deployer.sol
View file @
e8b8d225
...
...
@@ -115,6 +115,10 @@ abstract contract Deployer is Script {
string memory deploymentName = deployments[i].name;
string memory deployTx = _getDeployTransactionByContractAddress(addr);
if (bytes(deployTx).length == 0) {
console.log("Deploy Tx not found for %s skipping deployment artifact generation", deploymentName);
continue;
}
string memory contractName = _getContractNameFromDeployTransaction(deployTx);
console.log("Syncing deployment %s: contract %s", deploymentName, contractName);
...
...
pnpm-lock.yaml
View file @
e8b8d225
...
...
@@ -100,8 +100,8 @@ importers:
specifier
:
^10.2.0
version
:
10.2.0
nx
:
specifier
:
16.
8.1
version
:
16.
8.1
specifier
:
16.
9.0
version
:
16.
9.0
nyc
:
specifier
:
^15.1.0
version
:
15.1.0
...
...
@@ -116,7 +116,7 @@ importers:
version
:
1.0.0-beta.18(prettier@2.8.8)
rimraf
:
specifier
:
^5.0.1
version
:
5.0.
1
version
:
5.0.
2
ts-mocha
:
specifier
:
^10.0.0
version
:
10.0.0(mocha@10.2.0)
...
...
@@ -2281,6 +2281,13 @@ packages:
'
@sinclair/typebox'
:
0.27.8
dev
:
true
/@jest/schemas@29.6.3
:
resolution
:
{
integrity
:
sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
}
engines
:
{
node
:
^14.15.0 || ^16.10.0 || >=18.0.0
}
dependencies
:
'
@sinclair/typebox'
:
0.27.8
dev
:
true
/@jridgewell/gen-mapping@0.3.3
:
resolution
:
{
integrity
:
sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
}
engines
:
{
node
:
'
>=6.0.0'
}
...
...
@@ -2841,6 +2848,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-darwin-arm64@16.9.0
:
resolution
:
{
integrity
:
sha512-I+045kSIQgdHMfqpJ/bplWzTc82DM/c7VOM/XlrBUwaM9nsDchIC2mo1F93HDe/oJ+oxz9awHbED4GUzS6uc5g==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
darwin
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-darwin-x64@16.8.1
:
resolution
:
{
integrity
:
sha512-JJGrlOvEpDMWnM6YKaA1WOnzHgiw5vRKEowX9ba+jxhmCvtdjbLSxi228kv92JtQPPQ91zvtsNM+BFY0EbPOlA==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2850,6 +2866,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-darwin-x64@16.9.0
:
resolution
:
{
integrity
:
sha512-Yop/nZlJ+j4RIDB5bfuse583lWLiHtyL7bRPj2IsXAWiQHvXfrNnJJwYH7cGHgtR4ctSAZdOi7SZWlmgHO7Hyw==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
darwin
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-freebsd-x64@16.8.1
:
resolution
:
{
integrity
:
sha512-aZdJQ7cIQfXOmfk4vRXvVYxuV68xz8YyhNZ0IvBfJ16uZQ+YNl4BpklRLEIdaloSbwz9M1NNewmL+AgklEBxlA==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2859,6 +2884,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-freebsd-x64@16.9.0
:
resolution
:
{
integrity
:
sha512-qDg7Sd4V6edRuqR4Y+eEPec0J0Nf5ebGGGDegKjV7X4OfgagOb7k8o3cAGiKkKXuaAUg1OnqVw5nF7JysAmrLQ==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
freebsd
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-linux-arm-gnueabihf@16.8.1
:
resolution
:
{
integrity
:
sha512-JzjrTf7FFgikoVUbRs0hKvwHRR6SyqT4yIdk/YyiCt2mWY9w4m5DWtHM/9kJzhckkH9MY66m+X/zG6+NKsEMvg==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2868,6 +2902,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-arm-gnueabihf@16.9.0
:
resolution
:
{
integrity
:
sha512-eyG4PP5jSyDkO8Hm3zrchjm/coVY2L66/ExalfO8j+FSqwlipFIWwkpQM3Tw2fYrrMZpWXa7VlHj10Eu2xF5pQ==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm
]
os
:
[
linux
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-linux-arm64-gnu@16.8.1
:
resolution
:
{
integrity
:
sha512-CF0s981myBWusW7iW2+fKPa7ceYYe+NO5EdKe9l27fpHDkcA71KZU3q7U823QpO/7tYvVdBevJp3CCn2/GBURQ==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2877,6 +2920,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-arm64-gnu@16.9.0
:
resolution
:
{
integrity
:
sha512-oJBf2J1qwfACoSN+Hutb6iq0XvIllRdR+52HUXriCWLe6At4kaDW/p+sBcmtlsdgVY3BRs32rqTgYb8qJ1CJRA==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
linux
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-linux-arm64-musl@16.8.1
:
resolution
:
{
integrity
:
sha512-X4TobxRt1dALvoeKC3/t1CqZCMUqtEhGG+KQLT/51sG54HdxmTAWRFlvj8PvLH0QSBk4e+uRZAo45qpt3iSnBg==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2886,6 +2938,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-arm64-musl@16.9.0
:
resolution
:
{
integrity
:
sha512-RxAI0ls5Zy/HyL51PMmbaTX+tbZklgAeMqtQhziyjD/awao/9Jt783IqVPFfKoWTNmDq6/bjOG8obcnQlLKsaw==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
linux
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-linux-x64-gnu@16.8.1
:
resolution
:
{
integrity
:
sha512-lHvv2FD14Lpxh7muMLStH2tC1opQOaepO4nXwb1LaaoIpMym7kBgCK8AQuI98/oNQiMDXMNDKWQZCjxnJGDIPw==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2895,6 +2956,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-x64-gnu@16.9.0
:
resolution
:
{
integrity
:
sha512-xFaA3lOQn1hZ4mzXdCUe/CCioEjRJ0E18AekD2g0r9mMRVyrxEk0KH71jMQwbbVYzkvG9a2Vjiptp8hjmEejAw==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
linux
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-linux-x64-musl@16.8.1
:
resolution
:
{
integrity
:
sha512-c4gQvNgIjggD1A5sYhftQEC1PtAhV3sEnv60X00v9wmjl57Wj4Ty0TgyzpYglLysVRiko/B58S8NYS0jKvMmeA==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2904,6 +2974,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-linux-x64-musl@16.9.0
:
resolution
:
{
integrity
:
sha512-8tfqvCajTOH5Tt/NFMNJRePwkoUbGYUK7qHJU2LDAazDUsjvpawdvEM8FkJWsNgIsQBej+zcSYA16+sffjsY2g==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
linux
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-win32-arm64-msvc@16.8.1
:
resolution
:
{
integrity
:
sha512-GKHPy/MyGFoV9cdKgcWLZZK2vDdxt5bQ53ss0k+BDKRP+YwLKm7tJl23eeM7JdB4GLCBntEQPC+dBqxOA8Ze/w==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2913,6 +2992,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-win32-arm64-msvc@16.9.0
:
resolution
:
{
integrity
:
sha512-tUCu1rg76zHdCmov25K2uHUK2rZBTnzbe58r8Wieytmywijp6vGW53RZzYT86YIvInvPJsH7tULdbZpPW56Ruw==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
win32
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@nx/nx-win32-x64-msvc@16.8.1
:
resolution
:
{
integrity
:
sha512-yHZ5FAcx54rVc31R0yIpniepkHMPwaxG23l8E/ZYbL1iPwE/Wc1HeUzUvxUuSXtguRp7ihcRhaUEPkcSl2EAVw==
}
engines
:
{
node
:
'
>=
10'
}
...
...
@@ -2922,6 +3010,15 @@ packages:
dev
:
true
optional
:
true
/@nx/nx-win32-x64-msvc@16.9.0
:
resolution
:
{
integrity
:
sha512-YTYDZIvqo+2aZl6/ovnBFsEfxoQ/M2sYICJ3zyp00i13VkMdttrIqf8MFqNCD4K+usDQxSpq5M9QLSZ4yltydQ==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
win32
]
requiresBuild
:
true
dev
:
true
optional
:
true
/@parcel/watcher@2.0.4
:
resolution
:
{
integrity
:
sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==
}
engines
:
{
node
:
'
>=
10.0.0'
}
...
...
@@ -6297,7 +6394,7 @@ packages:
normalize-path
:
3.0.0
readdirp
:
3.6.0
optionalDependencies
:
fsevents
:
2.3.
2
fsevents
:
2.3.
3
dev
:
true
/chownr@2.0.0
:
...
...
@@ -6954,6 +7051,11 @@ packages:
engines
:
{
node
:
^14.15.0 || ^16.10.0 || >=18.0.0
}
dev
:
true
/diff-sequences@29.6.3
:
resolution
:
{
integrity
:
sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
}
engines
:
{
node
:
^14.15.0 || ^16.10.0 || >=18.0.0
}
dev
:
true
/diff@3.5.0
:
resolution
:
{
integrity
:
sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
}
engines
:
{
node
:
'
>=0.3.1'
}
...
...
@@ -8739,8 +8841,8 @@ packages:
/fs.realpath@1.0.0
:
resolution
:
{
integrity
:
sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
}
/fsevents@2.3.
2
:
resolution
:
{
integrity
:
sha512-
xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA
==
}
/fsevents@2.3.
3
:
resolution
:
{
integrity
:
sha512-
5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw
==
}
engines
:
{
node
:
^8.16.0 || ^10.6.0 || >=11.0.0
}
os
:
[
darwin
]
requiresBuild
:
true
...
...
@@ -8888,8 +8990,8 @@ packages:
path-scurry
:
1.10.1
dev
:
true
/glob@10.3.
5
:
resolution
:
{
integrity
:
sha512-
bYUpUD7XDEHI4Q2O5a7PXGvyw4deKR70kHiDxzQbe925wbZknhOzUt2xBgTkYL6RBcVeXYuD9iNYeqoWbBZQnA
==
}
/glob@10.3.
7
:
resolution
:
{
integrity
:
sha512-
wCMbE1m9Nx5yD9LYtgsVWq5VhHlk5WzJirw594qZR6AIvQYuHrdDtIktUVjQItalD53y7dqoedu9xP0u0WaxIQ
==
}
engines
:
{
node
:
'
>=16
||
14
>=14.17'
}
hasBin
:
true
dependencies
:
...
...
@@ -9999,6 +10101,21 @@ packages:
-
bufferutil
-
utf-8-validate
/jest-diff@29.7.0
:
resolution
:
{
integrity
:
sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
}
engines
:
{
node
:
^14.15.0 || ^16.10.0 || >=18.0.0
}
dependencies
:
chalk
:
4.1.2
diff-sequences
:
29.6.3
jest-get-type
:
29.6.3
pretty-format
:
29.7.0
dev
:
true
/jest-get-type@29.6.3
:
resolution
:
{
integrity
:
sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
}
engines
:
{
node
:
^14.15.0 || ^16.10.0 || >=18.0.0
}
dev
:
true
/joycon@3.1.1
:
resolution
:
{
integrity
:
sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==
}
engines
:
{
node
:
'
>=10'
}
...
...
@@ -11546,7 +11663,7 @@ packages:
tar-stream
:
2.2.0
tmp
:
0.2.1
tsconfig-paths
:
4.2.0
tslib
:
2.6.
0
tslib
:
2.6.
2
v8-compile-cache
:
2.3.0
yargs
:
17.7.2
yargs-parser
:
21.1.1
...
...
@@ -11565,6 +11682,70 @@ packages:
-
debug
dev
:
true
/nx@16.9.0
:
resolution
:
{
integrity
:
sha512-5/AjO4XJkiTcyIiw+zPyeOBdoy2njS/9fYBFroB4402mFtbqKiWkfjt+9Tng1AWSQzxyuKQb0hopdUQTEPhdcw==
}
hasBin
:
true
requiresBuild
:
true
peerDependencies
:
'
@swc-node/register'
:
^1.6.7
'
@swc/core'
:
^1.3.85
peerDependenciesMeta
:
'
@swc-node/register'
:
optional
:
true
'
@swc/core'
:
optional
:
true
dependencies
:
'
@nrwl/tao'
:
16.8.1
'
@parcel/watcher'
:
2.0.4
'
@yarnpkg/lockfile'
:
1.1.0
'
@yarnpkg/parsers'
:
3.0.0-rc.46
'
@zkochan/js-yaml'
:
0.0.6
axios
:
1.4.0
chalk
:
4.1.2
cli-cursor
:
3.1.0
cli-spinners
:
2.6.1
cliui
:
7.0.4
dotenv
:
16.3.1
dotenv-expand
:
10.0.0
enquirer
:
2.3.6
figures
:
3.2.0
flat
:
5.0.2
fs-extra
:
11.1.1
glob
:
7.1.4
ignore
:
5.2.4
jest-diff
:
29.7.0
js-yaml
:
4.1.0
jsonc-parser
:
3.2.0
lines-and-columns
:
2.0.3
minimatch
:
3.0.5
node-machine-id
:
1.1.12
npm-run-path
:
4.0.1
open
:
8.4.2
semver
:
7.5.3
string-width
:
4.2.3
strong-log-transformer
:
2.1.0
tar-stream
:
2.2.0
tmp
:
0.2.1
tsconfig-paths
:
4.2.0
tslib
:
2.6.2
v8-compile-cache
:
2.3.0
yargs
:
17.7.2
yargs-parser
:
21.1.1
optionalDependencies
:
'
@nx/nx-darwin-arm64'
:
16.9.0
'
@nx/nx-darwin-x64'
:
16.9.0
'
@nx/nx-freebsd-x64'
:
16.9.0
'
@nx/nx-linux-arm-gnueabihf'
:
16.9.0
'
@nx/nx-linux-arm64-gnu'
:
16.9.0
'
@nx/nx-linux-arm64-musl'
:
16.9.0
'
@nx/nx-linux-x64-gnu'
:
16.9.0
'
@nx/nx-linux-x64-musl'
:
16.9.0
'
@nx/nx-win32-arm64-msvc'
:
16.9.0
'
@nx/nx-win32-x64-msvc'
:
16.9.0
transitivePeerDependencies
:
-
debug
dev
:
true
/nyc@15.1.0
:
resolution
:
{
integrity
:
sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==
}
engines
:
{
node
:
'
>=8.9'
}
...
...
@@ -12308,6 +12489,15 @@ packages:
react-is
:
18.2.0
dev
:
true
/pretty-format@29.7.0
:
resolution
:
{
integrity
:
sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
}
engines
:
{
node
:
^14.15.0 || ^16.10.0 || >=18.0.0
}
dependencies
:
'
@jest/schemas'
:
29.6.3
ansi-styles
:
5.2.0
react-is
:
18.2.0
dev
:
true
/process-on-spawn@1.0.0
:
resolution
:
{
integrity
:
sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==
}
engines
:
{
node
:
'
>=8'
}
...
...
@@ -12899,12 +13089,12 @@ packages:
glob
:
7.2.3
dev
:
true
/rimraf@5.0.
1
:
resolution
:
{
integrity
:
sha512-
OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg
==
}
/rimraf@5.0.
2
:
resolution
:
{
integrity
:
sha512-
SeHT0IRkQNIhWL7O5qrCt8MfJagJ2ZOemGMIx2NXS7MP1GldYpWSw3mCLbnjA0Ac6eadZMcDFZjynCWGJmwO6A
==
}
engines
:
{
node
:
'
>=14'
}
hasBin
:
true
dependencies
:
glob
:
10.3.
5
glob
:
10.3.
7
dev
:
true
/ripemd160@2.0.2
:
...
...
@@ -12932,7 +13122,7 @@ packages:
engines
:
{
node
:
'
>=14.18.0'
,
npm
:
'
>=8.0.0'
}
hasBin
:
true
optionalDependencies
:
fsevents
:
2.3.
2
fsevents
:
2.3.
3
dev
:
true
/rollup@3.28.0
:
...
...
@@ -12940,7 +13130,7 @@ packages:
engines
:
{
node
:
'
>=14.18.0'
,
npm
:
'
>=8.0.0'
}
hasBin
:
true
optionalDependencies
:
fsevents
:
2.3.
2
fsevents
:
2.3.
3
dev
:
true
/rpc-websockets@7.5.1
:
...
...
@@ -14065,6 +14255,7 @@ packages:
/tslib@2.6.0
:
resolution
:
{
integrity
:
sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==
}
dev
:
false
/tslib@2.6.2
:
resolution
:
{
integrity
:
sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
}
...
...
@@ -14154,7 +14345,7 @@ packages:
'
@esbuild-kit/core-utils'
:
3.1.0
'
@esbuild-kit/esm-loader'
:
2.5.5
optionalDependencies
:
fsevents
:
2.3.
2
fsevents
:
2.3.
3
dev
:
true
/tty-table@4.1.6
:
...
...
@@ -14789,7 +14980,7 @@ packages:
postcss
:
8.4.27
rollup
:
3.26.3
optionalDependencies
:
fsevents
:
2.3.
2
fsevents
:
2.3.
3
dev
:
true
/vite@4.4.9(@types/node@20.6.2)
:
...
...
@@ -14825,7 +15016,7 @@ packages:
postcss
:
8.4.27
rollup
:
3.28.0
optionalDependencies
:
fsevents
:
2.3.
2
fsevents
:
2.3.
3
dev
:
true
/vite@4.4.9(@types/node@20.6.3)
:
...
...
@@ -14861,7 +15052,7 @@ packages:
postcss
:
8.4.27
rollup
:
3.28.0
optionalDependencies
:
fsevents
:
2.3.
2
fsevents
:
2.3.
3
dev
:
true
/vitest@0.34.1
:
...
...
proxyd/consensus_poller.go
View file @
e8b8d225
...
...
@@ -261,7 +261,7 @@ func (cp *ConsensusPoller) UpdateBackend(ctx context.Context, be *Backend) {
}
// if backend is not healthy state we'll only resume checking it after ban
if
!
be
.
IsHealthy
()
{
if
!
be
.
IsHealthy
()
&&
!
be
.
forcedCandidate
{
log
.
Warn
(
"backend banned - not healthy"
,
"backend"
,
be
.
Name
)
cp
.
Ban
(
be
)
return
...
...
@@ -327,7 +327,7 @@ func (cp *ConsensusPoller) UpdateBackend(ctx context.Context, be *Backend) {
RecordBackendUnexpectedBlockTags
(
be
,
!
expectedBlockTags
)
if
!
expectedBlockTags
{
if
!
expectedBlockTags
&&
!
be
.
forcedCandidate
{
log
.
Warn
(
"backend banned - unexpected block tags"
,
"backend"
,
be
.
Name
,
"oldFinalized"
,
bs
.
finalizedBlockNumber
,
...
...
@@ -490,6 +490,10 @@ func (cp *ConsensusPoller) IsBanned(be *Backend) bool {
// Ban bans a specific backend
func
(
cp
*
ConsensusPoller
)
Ban
(
be
*
Backend
)
{
if
be
.
forcedCandidate
{
return
}
bs
:=
cp
.
backendState
[
be
]
defer
bs
.
backendStateMux
.
Unlock
()
bs
.
backendStateMux
.
Lock
()
...
...
proxyd/rewriter.go
View file @
e8b8d225
...
...
@@ -99,7 +99,11 @@ func rewriteParam(rctx RewriteContext, req *RPCReq, res *RPCRes, pos int, requir
return
RewriteNone
,
nil
}
val
,
rw
,
err
:=
rewriteTag
(
rctx
,
p
[
pos
]
.
(
string
))
s
,
ok
:=
p
[
pos
]
.
(
string
)
if
!
ok
{
return
RewriteOverrideError
,
errors
.
New
(
"expected string"
)
}
val
,
rw
,
err
:=
rewriteTag
(
rctx
,
s
)
if
err
!=
nil
{
return
RewriteOverrideError
,
err
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment