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
30573756
Unverified
Commit
30573756
authored
Jan 20, 2023
by
mergify[bot]
Committed by
GitHub
Jan 20, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into jm/add-missing-oz-audit
parents
f3037682
73f0cdde
Changes
16
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
73 additions
and
32 deletions
+73
-32
driver.go
op-batcher/batcher/driver.go
+1
-1
l1standardbridge.go
op-bindings/bindings/l1standardbridge.go
+1
-1
l2standardbridge.go
op-bindings/bindings/l2standardbridge.go
+1
-1
l2standardbridge_more.go
op-bindings/bindings/l2standardbridge_more.go
+1
-1
legacy_withdrawal.go
op-chain-ops/crossdomain/legacy_withdrawal.go
+14
-0
.gas-snapshot
packages/contracts-bedrock/.gas-snapshot
+14
-14
L1StandardBridge.sol
packages/contracts-bedrock/contracts/L1/L1StandardBridge.sol
+11
-4
L2StandardBridge.sol
packages/contracts-bedrock/contracts/L2/L2StandardBridge.sol
+17
-3
L1StandardBridge.t.sol
...s/contracts-bedrock/contracts/test/L1StandardBridge.t.sol
+5
-1
L2StandardBridge.t.sol
...s/contracts-bedrock/contracts/test/L2StandardBridge.t.sol
+3
-0
StandardBridge.sol
.../contracts-bedrock/contracts/universal/StandardBridge.sol
+4
-5
check-l2.ts
packages/contracts-bedrock/tasks/check-l2.ts
+1
-1
2022_05-Bedrock_Contracts-Zeppelin.pdf
...s/security-reviews/2022_05-Bedrock_Contracts-Zeppelin.pdf
+0
-0
2022_08-Bedrock_GoLang-SigmaPrime.pdf
...ts/security-reviews/2022_08-Bedrock_GoLang-SigmaPrime.pdf
+0
-0
2022_10-Drippie-Spearbit.pdf
...l-documents/security-reviews/2022_10-Drippie-Spearbit.pdf
+0
-0
2023_01-Bedrock_Updates-TrailOfBits.pdf
.../security-reviews/2023_01-Bedrock_Updates-TrailOfBits.pdf
+0
-0
No files found.
op-batcher/batcher/driver.go
View file @
30573756
...
@@ -163,7 +163,7 @@ func NewBatchSubmitterWithSigner(cfg Config, addr common.Address, signer SignerF
...
@@ -163,7 +163,7 @@ func NewBatchSubmitterWithSigner(cfg Config, addr common.Address, signer SignerF
done
:
make
(
chan
struct
{}),
done
:
make
(
chan
struct
{}),
log
:
l
,
log
:
l
,
state
:
NewChannelManager
(
l
,
cfg
.
ChannelTimeout
),
state
:
NewChannelManager
(
l
,
cfg
.
ChannelTimeout
),
// TODO: this context only exists because the even loop doesn't reach done
// TODO: this context only exists because the even
t
loop doesn't reach done
// if the tx manager is blocking forever due to e.g. insufficient balance.
// if the tx manager is blocking forever due to e.g. insufficient balance.
ctx
:
ctx
,
ctx
:
ctx
,
cancel
:
cancel
,
cancel
:
cancel
,
...
...
op-bindings/bindings/l1standardbridge.go
View file @
30573756
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l2standardbridge.go
View file @
30573756
This diff is collapsed.
Click to expand it.
op-bindings/bindings/l2standardbridge_more.go
View file @
30573756
This diff is collapsed.
Click to expand it.
op-chain-ops/crossdomain/legacy_withdrawal.go
View file @
30573756
...
@@ -170,3 +170,17 @@ func (w *LegacyWithdrawal) Value() (*big.Int, error) {
...
@@ -170,3 +170,17 @@ func (w *LegacyWithdrawal) Value() (*big.Int, error) {
return
value
,
nil
return
value
,
nil
}
}
// CrossDomainMessage turns the LegacyWithdrawal into
// a CrossDomainMessage. LegacyWithdrawals do not have
// the concept of value or gaslimit, so set them to 0.
func
(
w
*
LegacyWithdrawal
)
CrossDomainMessage
()
*
CrossDomainMessage
{
return
&
CrossDomainMessage
{
Nonce
:
w
.
Nonce
,
Sender
:
w
.
Sender
,
Target
:
w
.
Target
,
Value
:
new
(
big
.
Int
),
GasLimit
:
new
(
big
.
Int
),
Data
:
[]
byte
(
w
.
Data
),
}
}
packages/contracts-bedrock/.gas-snapshot
View file @
30573756
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 261344)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 261344)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 75851)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 75851)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 348
151
)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 348
207
)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 112
583
)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 112
639
)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 348
173
)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 348
229
)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 1126
04
)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 1126
60
)
GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 40502)
GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 40502)
GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 88513)
GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 88513)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 74998)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 74998)
...
@@ -92,11 +92,11 @@ L1ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (
...
@@ -92,11 +92,11 @@ L1ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (
L1ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16093)
L1ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16093)
L1ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17593)
L1ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17593)
L1ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 323814)
L1ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 323814)
L1StandardBridge_DepositERC20To_Test:test_depositERC20To_succeeds() (gas: 57
5959
)
L1StandardBridge_DepositERC20To_Test:test_depositERC20To_succeeds() (gas: 57
6276
)
L1StandardBridge_DepositERC20_Test:test_depositERC20_succeeds() (gas: 57
3786
)
L1StandardBridge_DepositERC20_Test:test_depositERC20_succeeds() (gas: 57
4103
)
L1StandardBridge_DepositERC20_TestFail:test_depositERC20_notEoa_reverts() (gas: 22320)
L1StandardBridge_DepositERC20_TestFail:test_depositERC20_notEoa_reverts() (gas: 22320)
L1StandardBridge_DepositETHTo_Test:test_depositETHTo_succeeds() (gas: 324
712
)
L1StandardBridge_DepositETHTo_Test:test_depositETHTo_succeeds() (gas: 324
839
)
L1StandardBridge_DepositETH_Test:test_depositETH_succeeds() (gas: 367
539
)
L1StandardBridge_DepositETH_Test:test_depositETH_succeeds() (gas: 367
666
)
L1StandardBridge_DepositETH_TestFail:test_depositETH_notEoa_reverts() (gas: 40780)
L1StandardBridge_DepositETH_TestFail:test_depositETH_notEoa_reverts() (gas: 40780)
L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 34207)
L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 34207)
L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 34288)
L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 34288)
...
@@ -105,9 +105,9 @@ L1StandardBridge_FinalizeERC20Withdrawal_Test:test_finalizeERC20Withdrawal_succe
...
@@ -105,9 +105,9 @@ L1StandardBridge_FinalizeERC20Withdrawal_Test:test_finalizeERC20Withdrawal_succe
L1StandardBridge_FinalizeERC20Withdrawal_TestFail:test_finalizeERC20Withdrawal_notMessenger_reverts() (gas: 31148)
L1StandardBridge_FinalizeERC20Withdrawal_TestFail:test_finalizeERC20Withdrawal_notMessenger_reverts() (gas: 31148)
L1StandardBridge_FinalizeERC20Withdrawal_TestFail:test_finalizeERC20Withdrawal_notOtherBridge_reverts() (gas: 31504)
L1StandardBridge_FinalizeERC20Withdrawal_TestFail:test_finalizeERC20Withdrawal_notOtherBridge_reverts() (gas: 31504)
L1StandardBridge_FinalizeETHWithdrawal_Test:test_finalizeETHWithdrawal_succeeds() (gas: 58686)
L1StandardBridge_FinalizeETHWithdrawal_Test:test_finalizeETHWithdrawal_succeeds() (gas: 58686)
L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 3
1449
)
L1StandardBridge_Getter_Test:test_getters_succeeds() (gas: 3
2151
)
L1StandardBridge_Initialize_Test:test_initialize_succeeds() (gas: 22005)
L1StandardBridge_Initialize_Test:test_initialize_succeeds() (gas: 22005)
L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 51
447
5)
L1StandardBridge_Receive_Test:test_receive_succeeds() (gas: 51
999
5)
L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 8389)
L2CrossDomainMessenger_Test:test_messageVersion_succeeds() (gas: 8389)
L2CrossDomainMessenger_Test:test_pause_notOwner_reverts() (gas: 10837)
L2CrossDomainMessenger_Test:test_pause_notOwner_reverts() (gas: 10837)
L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31846)
L2CrossDomainMessenger_Test:test_pause_succeeds() (gas: 31846)
...
@@ -168,11 +168,11 @@ L2StandardBridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 239
...
@@ -168,11 +168,11 @@ L2StandardBridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 239
L2StandardBridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23893)
L2StandardBridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23893)
L2StandardBridge_Test:test_finalizeDeposit_succeeds() (gas: 89473)
L2StandardBridge_Test:test_finalizeDeposit_succeeds() (gas: 89473)
L2StandardBridge_Test:test_initialize_succeeds() (gas: 24270)
L2StandardBridge_Test:test_initialize_succeeds() (gas: 24270)
L2StandardBridge_Test:test_receive_succeeds() (gas: 1
31905
)
L2StandardBridge_Test:test_receive_succeeds() (gas: 1
41940
)
L2StandardBridge_Test:test_withdrawTo_succeeds() (gas: 344
660
)
L2StandardBridge_Test:test_withdrawTo_succeeds() (gas: 344
914
)
L2StandardBridge_Test:test_withdraw_insufficientValue_reverts() (gas: 196
30
)
L2StandardBridge_Test:test_withdraw_insufficientValue_reverts() (gas: 196
27
)
L2StandardBridge_Test:test_withdraw_notEOA_reverts() (gas: 251798)
L2StandardBridge_Test:test_withdraw_notEOA_reverts() (gas: 251798)
L2StandardBridge_Test:test_withdraw_succeeds() (gas: 34
3975
)
L2StandardBridge_Test:test_withdraw_succeeds() (gas: 34
4228
)
L2ToL1MessagePasserTest:test_burn_succeeds() (gas: 112572)
L2ToL1MessagePasserTest:test_burn_succeeds() (gas: 112572)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract_succeeds() (gas: 70423)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract_succeeds() (gas: 70423)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA_succeeds() (gas: 75874)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA_succeeds() (gas: 75874)
...
...
packages/contracts-bedrock/contracts/L1/L1StandardBridge.sol
View file @
30573756
...
@@ -91,15 +91,22 @@ contract L1StandardBridge is StandardBridge, Semver {
...
@@ -91,15 +91,22 @@ contract L1StandardBridge is StandardBridge, Semver {
);
);
/**
/**
* @custom:semver 1.
0
.0
* @custom:semver 1.
1
.0
*
*
* @param _messenger Address of the L1CrossDomainMessenger.
* @param _messenger Address of the L1CrossDomainMessenger.
*/
*/
constructor(address payable _messenger)
constructor(address payable _messenger)
Semver(1,
0
, 0)
Semver(1,
1
, 0)
StandardBridge(_messenger, payable(Predeploys.L2_STANDARD_BRIDGE))
StandardBridge(_messenger, payable(Predeploys.L2_STANDARD_BRIDGE))
{}
{}
/**
* @notice Allows EOAs to bridge ETH by sending directly to the bridge.
*/
receive() external payable override onlyEOA {
_initiateETHDeposit(msg.sender, msg.sender, RECEIVE_DEFAULT_GAS_LIMIT, bytes(""));
}
/**
/**
* @custom:legacy
* @custom:legacy
* @notice Finalizes a withdrawal of ERC20 tokens from L2.
* @notice Finalizes a withdrawal of ERC20 tokens from L2.
...
@@ -261,7 +268,7 @@ contract L1StandardBridge is StandardBridge, Semver {
...
@@ -261,7 +268,7 @@ contract L1StandardBridge is StandardBridge, Semver {
address _from,
address _from,
address _to,
address _to,
uint32 _minGasLimit,
uint32 _minGasLimit,
bytes
calldata
_extraData
bytes
memory
_extraData
) internal {
) internal {
emit ETHDepositInitiated(_from, _to, msg.value, _extraData);
emit ETHDepositInitiated(_from, _to, msg.value, _extraData);
_initiateBridgeETH(_from, _to, msg.value, _minGasLimit, _extraData);
_initiateBridgeETH(_from, _to, msg.value, _minGasLimit, _extraData);
...
@@ -285,7 +292,7 @@ contract L1StandardBridge is StandardBridge, Semver {
...
@@ -285,7 +292,7 @@ contract L1StandardBridge is StandardBridge, Semver {
address _to,
address _to,
uint256 _amount,
uint256 _amount,
uint32 _minGasLimit,
uint32 _minGasLimit,
bytes
calldata
_extraData
bytes
memory
_extraData
) internal {
) internal {
emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _extraData);
emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _extraData);
_initiateBridgeERC20(_l1Token, _l2Token, _from, _to, _amount, _minGasLimit, _extraData);
_initiateBridgeERC20(_l1Token, _l2Token, _from, _to, _amount, _minGasLimit, _extraData);
...
...
packages/contracts-bedrock/contracts/L2/L2StandardBridge.sol
View file @
30573756
...
@@ -59,15 +59,29 @@ contract L2StandardBridge is StandardBridge, Semver {
...
@@ -59,15 +59,29 @@ contract L2StandardBridge is StandardBridge, Semver {
);
);
/**
/**
* @custom:semver 1.
0
.0
* @custom:semver 1.
1
.0
*
*
* @param _otherBridge Address of the L1StandardBridge.
* @param _otherBridge Address of the L1StandardBridge.
*/
*/
constructor(address payable _otherBridge)
constructor(address payable _otherBridge)
Semver(1,
0
, 0)
Semver(1,
1
, 0)
StandardBridge(payable(Predeploys.L2_CROSS_DOMAIN_MESSENGER), _otherBridge)
StandardBridge(payable(Predeploys.L2_CROSS_DOMAIN_MESSENGER), _otherBridge)
{}
{}
/**
* @notice Allows EOAs to bridge ETH by sending directly to the bridge.
*/
receive() external payable override onlyEOA {
_initiateWithdrawal(
Predeploys.LEGACY_ERC20_ETH,
msg.sender,
msg.sender,
msg.value,
RECEIVE_DEFAULT_GAS_LIMIT,
bytes("")
);
}
/**
/**
* @custom:legacy
* @custom:legacy
* @notice Initiates a withdrawal from L2 to L1.
* @notice Initiates a withdrawal from L2 to L1.
...
@@ -165,7 +179,7 @@ contract L2StandardBridge is StandardBridge, Semver {
...
@@ -165,7 +179,7 @@ contract L2StandardBridge is StandardBridge, Semver {
address _to,
address _to,
uint256 _amount,
uint256 _amount,
uint32 _minGasLimit,
uint32 _minGasLimit,
bytes
calldata
_extraData
bytes
memory
_extraData
) internal {
) internal {
address l1Token = OptimismMintableERC20(_l2Token).l1Token();
address l1Token = OptimismMintableERC20(_l2Token).l1Token();
if (_l2Token == Predeploys.LEGACY_ERC20_ETH) {
if (_l2Token == Predeploys.LEGACY_ERC20_ETH) {
...
...
packages/contracts-bedrock/contracts/test/L1StandardBridge.t.sol
View file @
30573756
...
@@ -16,7 +16,7 @@ contract L1StandardBridge_Getter_Test is Bridge_Initializer {
...
@@ -16,7 +16,7 @@ contract L1StandardBridge_Getter_Test is Bridge_Initializer {
assert(L1Bridge.OTHER_BRIDGE() == L2Bridge);
assert(L1Bridge.OTHER_BRIDGE() == L2Bridge);
assert(L1Bridge.messenger() == L1Messenger);
assert(L1Bridge.messenger() == L1Messenger);
assert(L1Bridge.MESSENGER() == L1Messenger);
assert(L1Bridge.MESSENGER() == L1Messenger);
assertEq(L1Bridge.version(), "1.
0
.0");
assertEq(L1Bridge.version(), "1.
1
.0");
}
}
}
}
...
@@ -38,6 +38,10 @@ contract L1StandardBridge_Receive_Test is Bridge_Initializer {
...
@@ -38,6 +38,10 @@ contract L1StandardBridge_Receive_Test is Bridge_Initializer {
function test_receive_succeeds() external {
function test_receive_succeeds() external {
assertEq(address(op).balance, 0);
assertEq(address(op).balance, 0);
// The legacy event must be emitted for backwards compatibility
vm.expectEmit(true, true, true, true);
emit ETHDepositInitiated(alice, alice, 100, hex"");
vm.expectEmit(true, true, true, true);
vm.expectEmit(true, true, true, true);
emit ETHBridgeInitiated(alice, alice, 100, hex"");
emit ETHBridgeInitiated(alice, alice, 100, hex"");
...
...
packages/contracts-bedrock/contracts/test/L2StandardBridge.t.sol
View file @
30573756
...
@@ -33,6 +33,9 @@ contract L2StandardBridge_Test is Bridge_Initializer {
...
@@ -33,6 +33,9 @@ contract L2StandardBridge_Test is Bridge_Initializer {
// TODO: withdrawal hash should be computed correctly
// TODO: withdrawal hash should be computed correctly
// TODO: events from each contract
// TODO: events from each contract
vm.expectEmit(true, true, true, true);
emit WithdrawalInitiated(address(0), Predeploys.LEGACY_ERC20_ETH, alice, alice, 100, hex"");
vm.prank(alice, alice);
vm.prank(alice, alice);
(bool success, ) = address(L2Bridge).call{ value: 100 }(hex"");
(bool success, ) = address(L2Bridge).call{ value: 100 }(hex"");
assertEq(success, true);
assertEq(success, true);
...
...
packages/contracts-bedrock/contracts/universal/StandardBridge.sol
View file @
30573756
...
@@ -164,11 +164,10 @@ abstract contract StandardBridge {
...
@@ -164,11 +164,10 @@ abstract contract StandardBridge {
}
}
/**
/**
* @notice Allows EOAs to deposit ETH by sending directly to the bridge.
* @notice Allows EOAs to bridge ETH by sending directly to the bridge.
* Must be implemented by contracts that inherit.
*/
*/
receive() external payable onlyEOA {
receive() external payable virtual;
_initiateBridgeETH(msg.sender, msg.sender, msg.value, RECEIVE_DEFAULT_GAS_LIMIT, bytes(""));
}
/**
/**
* @custom:legacy
* @custom:legacy
...
@@ -401,7 +400,7 @@ abstract contract StandardBridge {
...
@@ -401,7 +400,7 @@ abstract contract StandardBridge {
address _to,
address _to,
uint256 _amount,
uint256 _amount,
uint32 _minGasLimit,
uint32 _minGasLimit,
bytes
calldata
_extraData
bytes
memory
_extraData
) internal {
) internal {
if (_isOptimismMintableERC20(_localToken)) {
if (_isOptimismMintableERC20(_localToken)) {
require(
require(
...
...
packages/contracts-bedrock/tasks/check-l2.ts
View file @
30573756
...
@@ -328,7 +328,7 @@ const check = {
...
@@ -328,7 +328,7 @@ const check = {
signer
signer
)
)
await
assertSemver
(
L2StandardBridge
,
'
L2StandardBridge
'
)
await
assertSemver
(
L2StandardBridge
,
'
L2StandardBridge
'
,
'
1.1.0
'
)
const
OTHER_BRIDGE
=
await
L2StandardBridge
.
OTHER_BRIDGE
()
const
OTHER_BRIDGE
=
await
L2StandardBridge
.
OTHER_BRIDGE
()
assert
(
OTHER_BRIDGE
!==
hre
.
ethers
.
constants
.
AddressZero
)
assert
(
OTHER_BRIDGE
!==
hre
.
ethers
.
constants
.
AddressZero
)
...
...
technical-documents/security-reviews/2022_05-BedrockContracts-Zeppelin.pdf
→
technical-documents/security-reviews/2022_05-Bedrock
_
Contracts-Zeppelin.pdf
View file @
30573756
File moved
technical-documents/security-reviews/2022_08-Bedrock
-Go
-SigmaPrime.pdf
→
technical-documents/security-reviews/2022_08-Bedrock
_GoLang
-SigmaPrime.pdf
View file @
30573756
File moved
technical-documents/security-reviews/2022_10
_Drippie_
Spearbit.pdf
→
technical-documents/security-reviews/2022_10
-Drippie-
Spearbit.pdf
View file @
30573756
File moved
technical-documents/security-reviews/2023_01-Bedrock_Updates-TrailOfBits.pdf
0 → 100644
View file @
30573756
File added
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