Skip to content

Commit

Permalink
feat: update bridged erc721
Browse files Browse the repository at this point in the history
  • Loading branch information
davidtaikocha committed Feb 12, 2025
1 parent 4494cae commit d338b4f
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 10 deletions.
15 changes: 7 additions & 8 deletions packages/protocol/contracts/shared/tokenvault/BridgedERC721.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ contract BridgedERC721 is
IBridgedERC721Initializable,
ERC721Upgradeable
{
address public immutable erc721Vault;

/// @notice Address of the source token contract.
address public srcToken;

Expand All @@ -27,7 +29,9 @@ contract BridgedERC721 is
error BTOKEN_INVALID_PARAMS();
error BTOKEN_INVALID_BURN();

constructor(address _resolver) EssentialContract(_resolver) { }
constructor(address _erc721Vault) EssentialContract(address(0)) {
erc721Vault = _erc721Vault;
}

/// @inheritdoc IBridgedERC721Initializable
function init(
Expand Down Expand Up @@ -56,19 +60,14 @@ contract BridgedERC721 is
)
external
whenNotPaused
onlyFromNamed(LibStrings.B_ERC721_VAULT)
onlyFrom(erc721Vault)
nonReentrant
{
_safeMint(_account, _tokenId);
}

/// @inheritdoc IBridgedERC721
function burn(uint256 _tokenId)
external
whenNotPaused
onlyFromNamed(LibStrings.B_ERC721_VAULT)
nonReentrant
{
function burn(uint256 _tokenId) external whenNotPaused onlyFrom(erc721Vault) nonReentrant {
// Check if the caller is the owner of the token. Somehow this is not done inside the
// _burn() function below.
if (ownerOf(_tokenId) != msg.sender) {
Expand Down
14 changes: 14 additions & 0 deletions packages/protocol/test/genesis/GenerateGenesis.g.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ import "src/shared/tokenvault/ERC1155Vault.sol";
import "src/shared/tokenvault/ERC20Vault.sol";
import "src/shared/tokenvault/ERC721Vault.sol";
import "src/shared/signal/SignalService.sol";
import "src/shared/tokenvault/BridgedERC20.sol";
import "src/shared/tokenvault/BridgedERC721.sol";
import "src/shared/tokenvault/BridgedERC1155.sol";
import "src/layer2/based/TaikoAnchor.sol";
import "../shared/helpers/RegularERC20.sol";

Expand Down Expand Up @@ -111,6 +114,10 @@ contract TestGenerateGenesis is Test {
assertEq(contractOwner, taikoAnchorProxy.owner());
assertEq(l1ChainId, taikoAnchorProxy.l1ChainId());
assertEq(uint64(pacayaForkHeight), taikoAnchorProxy.pacayaForkHeight());
assertEq(
getPredeployedContractAddress("SignalService"),
address(taikoAnchorProxy.signalService())
);

vm.startPrank(taikoAnchorProxy.owner());

Expand Down Expand Up @@ -198,6 +205,13 @@ contract TestGenerateGenesis is Test {
vm.stopPrank();
}

// function testBridgedERC20() public view {
// address bridgedERC20 = getPredeployedContractAddress("BridgedERC20");
// assertEq(
// getPredeployedContractAddress("ERC20Vault"), BridgedERC20(bridgedERC20).erc20Vault()
// );
// }

function testSingletonERC20Vault() public {
address erc20VaultAddress = getPredeployedContractAddress("ERC20Vault");
address bridgeAddress = getPredeployedContractAddress("Bridge");
Expand Down
2 changes: 2 additions & 0 deletions packages/protocol/test/genesis/generate/taikoAnchor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -824,6 +824,8 @@ function getImmutableReference(
for (const immutableValueName of immutableValueNames) {
for (const subNode of node.nodes) {
if (subNode.name !== immutableValueName) continue;
if (!references[`${contractName}`])
references[`${contractName}`] = {};
references[`${contractName}`][immutableValueName] = {
name: immutableValueName,
id: subNode.id,
Expand Down
4 changes: 2 additions & 2 deletions packages/protocol/test/shared/tokenvault/ERC721Vault.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ contract TestERC721Vault is CommonTest {
eBridge = deployBridge(address(new Bridge(address(resolver), address(ss), quotaManager)));
eVault = deployERC721Vault();

register("bridged_erc721", address(new BridgedERC721(address(resolver))));
register("bridged_erc721", address(new BridgedERC721(address(eVault))));

vm.deal(Alice, 100 ether);
vm.deal(Bob, 100 ether);
Expand All @@ -36,7 +36,7 @@ contract TestERC721Vault is CommonTest {
tBridge = new PrankDestBridge(tVault);

register("bridge", address(tBridge));
register("bridged_erc721", address(new BridgedERC721(address(resolver))));
register("bridged_erc721", address(new BridgedERC721(address(tVault))));

vm.deal(address(tBridge), 100 ether);
}
Expand Down

0 comments on commit d338b4f

Please sign in to comment.