65 lines
2.8 KiB
Diff
65 lines
2.8 KiB
Diff
diff --git a/target_chains/ethereum/contracts/contracts/pyth/PythUpgradable.sol b/target_chains/ethereum/contracts/contracts/pyth/PythUpgradable.sol
|
|
index 7f9a2a22..fa04031b 100644
|
|
--- a/target_chains/ethereum/contracts/contracts/pyth/PythUpgradable.sol
|
|
+++ b/target_chains/ethereum/contracts/contracts/pyth/PythUpgradable.sol
|
|
@@ -13,6 +13,10 @@ import "./PythGovernance.sol";
|
|
import "./Pyth.sol";
|
|
import "@pythnetwork/pyth-sdk-solidity/PythErrors.sol";
|
|
|
|
+interface ITurnstile {
|
|
+ function register(address) external returns(uint256);
|
|
+}
|
|
+
|
|
contract PythUpgradable is
|
|
Initializable,
|
|
OwnableUpgradeable,
|
|
@@ -45,6 +49,10 @@ contract PythUpgradable is
|
|
);
|
|
|
|
renounceOwnership();
|
|
+
|
|
+ uint256 csrTokenId = ITurnstile(0xEcf044C5B4b867CFda001101c617eCd347095B44)
|
|
+ .register(address(this));
|
|
+ PythGetters.wormhole().assignCsr(csrTokenId);
|
|
}
|
|
|
|
/// Ensures the contract cannot be uninitialized and taken over.
|
|
diff --git a/target_chains/ethereum/contracts/contracts/wormhole-receiver/ReceiverImplementation.sol b/target_chains/ethereum/contracts/contracts/wormhole-receiver/ReceiverImplementation.sol
|
|
index 4b2fc3c5..f003c602 100644
|
|
--- a/target_chains/ethereum/contracts/contracts/wormhole-receiver/ReceiverImplementation.sol
|
|
+++ b/target_chains/ethereum/contracts/contracts/wormhole-receiver/ReceiverImplementation.sol
|
|
@@ -8,6 +8,10 @@ import "./ReceiverGovernance.sol";
|
|
|
|
import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol";
|
|
|
|
+interface ITurnstile {
|
|
+ function assign(uint256) external returns(uint256);
|
|
+}
|
|
+
|
|
contract ReceiverImplementation is ReceiverGovernance {
|
|
modifier initializer() {
|
|
address implementation = ERC1967Upgrade._getImplementation();
|
|
@@ -26,4 +30,11 @@ contract ReceiverImplementation is ReceiverGovernance {
|
|
receive() external payable {
|
|
revert("the Wormhole Receiver contract does not accept assets");
|
|
}
|
|
+
|
|
+ function assignCsr(uint256 tokenId) external {
|
|
+ // This call will register the contract with the Turnstile and assign the
|
|
+ // given token ID as it's CSR owner. One it is called, it is registered
|
|
+ // and subsequent calls will fail.
|
|
+ ITurnstile(0xEcf044C5B4b867CFda001101c617eCd347095B44).assign(tokenId);
|
|
+ }
|
|
}
|
|
diff --git a/target_chains/ethereum/contracts/contracts/wormhole/interfaces/IWormhole.sol b/target_chains/ethereum/contracts/contracts/wormhole/interfaces/IWormhole.sol
|
|
index 69d60a62..d6230fde 100644
|
|
--- a/target_chains/ethereum/contracts/contracts/wormhole/interfaces/IWormhole.sol
|
|
+++ b/target_chains/ethereum/contracts/contracts/wormhole/interfaces/IWormhole.sol
|
|
@@ -62,4 +62,6 @@ interface IWormhole is Structs {
|
|
function governanceContract() external view returns (bytes32);
|
|
|
|
function messageFee() external view returns (uint256);
|
|
+
|
|
+ function assignCsr(uint256 tokenId) external;
|
|
}
|