Browse Source

aptos: use new resource account derivation logic

this is a recent breaking change in the aptos framework, which we have
to adapt to
Csongor Kiss 3 years ago
parent
commit
2c0ae74aa6

+ 1 - 1
aptos/coin/sources/Coin.move

@@ -1,3 +1,3 @@
-module 0xb54071ea68bc35759a17e9ddff91a8394a36a4790055e5bd225fae087a4a875b::coin {
+module 0xf4f53cc591e5190eddbc43940746e2b5deea6e0e1562b2bba765d488504842c7::coin {
     struct T has key {}
     struct T has key {}
 }
 }

+ 1 - 1
aptos/examples/core_messages/Move.toml

@@ -6,6 +6,6 @@ version = '1.0.0'
 Wormhole = { local = "../../wormhole/" }
 Wormhole = { local = "../../wormhole/" }
 
 
 [addresses]
 [addresses]
-wormhole = "0x251011524cd0f76881f16e7c2d822f0c1c9510bfd2430ba24e1b3d52796df204"
+wormhole = "0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017"
 deployer = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"
 deployer = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"
 core_messages = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"
 core_messages = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"

+ 5 - 4
aptos/token_bridge/Move.toml

@@ -16,11 +16,12 @@ Deployer = { local = "../deployer/" }
 WrappedCoin = { local = "../coin/" }
 WrappedCoin = { local = "../coin/" }
 
 
 [dev-addresses]
 [dev-addresses]
-# derived address from sha3_256(deployer + "token_bridge")
-token_bridge = "0x4450040bc7ea55def9182559ceffc0652d88541538b30a43477364f475f4a4ed"
+# derived address from sha3_256(deployer | "token_bridge" | 0xFF) by running
+# worm aptos derive-resource-account 0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b token_bridge
+token_bridge = "0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31"
 deployer = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"
 deployer = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"
-wrapped_coin = "0xb54071ea68bc35759a17e9ddff91a8394a36a4790055e5bd225fae087a4a875b"
-wormhole = "0x251011524cd0f76881f16e7c2d822f0c1c9510bfd2430ba24e1b3d52796df204"
+wrapped_coin = "0xf4f53cc591e5190eddbc43940746e2b5deea6e0e1562b2bba765d488504842c7"
+wormhole = "0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017"
 
 
 [addresses]
 [addresses]
 token_bridge = "_"
 token_bridge = "_"

+ 17 - 3
aptos/token_bridge/sources/token_hash.move

@@ -29,6 +29,7 @@ module token_bridge::token_hash {
 module token_bridge::token_hash_test {
 module token_bridge::token_hash_test {
     use token_bridge::token_hash;
     use token_bridge::token_hash;
     use wormhole::external_address;
     use wormhole::external_address;
+    use wrapped_coin::coin;
 
 
     use std::type_info;
     use std::type_info;
     use std::string;
     use std::string;
@@ -36,15 +37,28 @@ module token_bridge::token_hash_test {
     struct MyCoin {}
     struct MyCoin {}
 
 
     #[test]
     #[test]
-    public fun foo() {
+    public fun test_type_name() {
         let t = type_info::type_name<MyCoin>();
         let t = type_info::type_name<MyCoin>();
-        assert!(*string::bytes(&t) == b"0x4450040bc7ea55def9182559ceffc0652d88541538b30a43477364f475f4a4ed::token_hash_test::MyCoin", 0)
+        assert!(*string::bytes(&t) == b"0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31::token_hash_test::MyCoin", 0)
     }
     }
 
 
     #[test]
     #[test]
     public fun test_derive() {
     public fun test_derive() {
         let t = token_hash::derive<MyCoin>();
         let t = token_hash::derive<MyCoin>();
-        let expected = x"a5839f5bd57edea609a0ea0f8a58df8bf245e24624c1675cf6fa18c569356b1b";
+        let expected = x"4f69c5d0be57aee780277b1179e4833d61f0563869145e971d24a4e49fcd9302";
+        assert!(token_hash::get_external_address(&t) == external_address::from_bytes(expected), 0);
+    }
+
+    #[test]
+    public fun test_type_name_T() {
+        let t = type_info::type_name<coin::T>();
+        assert!(*string::bytes(&t) == b"0xf4f53cc591e5190eddbc43940746e2b5deea6e0e1562b2bba765d488504842c7::coin::T", 0)
+    }
+
+    #[test]
+    public fun test_derive_T() {
+        let t = token_hash::derive<coin::T>();
+        let expected = x"f0dcbf26a2d59b2196630ed6d5fb5c5bc4fd33996c9f31f19d29389d0c8e7ec2";
         assert!(token_hash::get_external_address(&t) == external_address::from_bytes(expected), 0);
         assert!(token_hash::get_external_address(&t) == external_address::from_bytes(expected), 0);
     }
     }
 }
 }

+ 1 - 1
aptos/token_bridge/sources/wrapped.move

@@ -240,7 +240,7 @@ module token_bridge::wrapped_test {
         let origin_token_chain = state::get_origin_info_token_chain(&origin_info);
         let origin_token_chain = state::get_origin_info_token_chain(&origin_info);
         let wrapped_asset_type_info = state::wrapped_asset_info(origin_info);
         let wrapped_asset_type_info = state::wrapped_asset_info(origin_info);
         let is_wrapped_asset = state::is_wrapped_asset<T>();
         let is_wrapped_asset = state::is_wrapped_asset<T>();
-        assert!(type_of<T>() == wrapped_asset_type_info, 0); //utf8(b"0xb54071ea68bc35759a17e9ddff91a8394a36a4790055e5bd225fae087a4a875b::coin::T"), 0);
+        assert!(type_of<T>() == wrapped_asset_type_info, 0); //utf8(b"0xf4f53cc591e5190eddbc43940746e2b5deea6e0e1562b2bba765d488504842c7::coin::T"), 0);
         assert!(origin_token_chain == u16::from_u64(2), 0);
         assert!(origin_token_chain == u16::from_u64(2), 0);
         assert!(external_address::get_bytes(&origin_token_address) == x"00000000000000000000000000000000000000000000000000000000beefface", 0);
         assert!(external_address::get_bytes(&origin_token_address) == x"00000000000000000000000000000000000000000000000000000000beefface", 0);
         assert!(is_wrapped_asset, 0);
         assert!(is_wrapped_asset, 0);

+ 3 - 2
aptos/wormhole/Move.toml

@@ -16,8 +16,9 @@ Deployer = { local = "../deployer/" }
 Deployer = { local = "../deployer/" }
 Deployer = { local = "../deployer/" }
 
 
 [dev-addresses]
 [dev-addresses]
-# derived address from sha3_256(deployer + "wormhole")
-wormhole = "0x251011524cd0f76881f16e7c2d822f0c1c9510bfd2430ba24e1b3d52796df204"
+# derived address from sha3_256(deployer | "wormhole" | 0xFF) by running
+# worm aptos derive-resource-account 0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b wormhole
+wormhole = "0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017"
 deployer = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"
 deployer = "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"
 
 
 [addresses]
 [addresses]

+ 1 - 1
aptos/wormhole/sources/wormhole.move

@@ -113,7 +113,7 @@ module wormhole::wormhole {
         initial_guardian: vector<u8>,
         initial_guardian: vector<u8>,
         message_fee: u64,
         message_fee: u64,
     ): signer {
     ): signer {
-        let deployer = account::create_account_for_test(@0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b);
+        let deployer = account::create_account_for_test(@deployer);
         let (wormhole, signer_cap) = account::create_resource_account(&deployer, b"wormhole");
         let (wormhole, signer_cap) = account::create_resource_account(&deployer, b"wormhole");
         init_internal(
         init_internal(
             signer_cap,
             signer_cap,

+ 4 - 1
clients/js/aptos.ts

@@ -119,7 +119,10 @@ export function deriveResourceAccount(
   deployer: Uint8Array, // 32 bytes
   deployer: Uint8Array, // 32 bytes
   seed: string,
   seed: string,
 ) {
 ) {
-  return sha3_256(Buffer.concat([deployer, Buffer.from(seed, "ascii")]))
+  // from https://github.com/aptos-labs/aptos-core/blob/25696fd266498d81d346fe86e01c330705a71465/aptos-move/framework/aptos-framework/sources/account.move#L90-L95
+  let DERIVE_RESOURCE_ACCOUNT_SCHEME = Buffer.alloc(1);
+  DERIVE_RESOURCE_ACCOUNT_SCHEME.writeUInt8(255);
+  return sha3_256(Buffer.concat([deployer, Buffer.from(seed, "ascii"), DERIVE_RESOURCE_ACCOUNT_SCHEME]))
 }
 }
 
 
 export async function callEntryFunc(
 export async function callEntryFunc(

+ 4 - 4
clients/js/main.ts

@@ -58,14 +58,14 @@ const OVERRIDES = {
   },
   },
   TESTNET: {
   TESTNET: {
     aptos: {
     aptos: {
-      token_bridge: "0xdd0a2618dc5564ccf38d0eca7877198fef51157fea74a6bc2e5e40b52c2a0a08",
-      core: "0x1b1752e26b65fc24971ee5ec9718d2ccdd36bf20486a10b2973ea6dedc6cd197"
+      token_bridge: "0xdc406ec328a21eacbbe0c145f7884612d7094ebd637288149ac7879bbff43493",
+      core: "0xaf4faf174bad7dba8092fc5ac37b9b8fea3929f05fcb0677fd16dc735bc3ffc8"
     }
     }
   },
   },
   DEVNET: {
   DEVNET: {
     aptos: {
     aptos: {
-      token_bridge: "0x4450040bc7ea55def9182559ceffc0652d88541538b30a43477364f475f4a4ed",
-      core: "0x251011524cd0f76881f16e7c2d822f0c1c9510bfd2430ba24e1b3d52796df204"
+      token_bridge: "0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31",
+      core: "0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017"
     }
     }
   }
   }
 }
 }

+ 2 - 2
sdk/js/src/utils/consts.ts

@@ -467,9 +467,9 @@ const DEVNET = {
     nft_bridge: undefined,
     nft_bridge: undefined,
   },
   },
   aptos: {
   aptos: {
-    core: "0x251011524cd0f76881f16e7c2d822f0c1c9510bfd2430ba24e1b3d52796df204",
+    core: "0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017",
     token_bridge:
     token_bridge:
-      "0x4450040bc7ea55def9182559ceffc0652d88541538b30a43477364f475f4a4ed",
+      "0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31",
     nft_bridge: undefined,
     nft_bridge: undefined,
   },
   },
   sui: {
   sui: {