diff --git a/package.json b/package.json index 8430998..606e90f 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "dependencies": { "@material-ui/core": "^4.11.3", "@material-ui/icons": "^4.11.2", - "@project-serum/anchor": "^0.4.4", + "@project-serum/anchor": "^0.14.0", "@project-serum/borsh": "^0.1.1", "@project-serum/common": "^0.0.1-beta.3", "@project-serum/sol-wallet-adapter": "^0.2.0", diff --git a/src/components/Multisig.tsx b/src/components/Multisig.tsx index 987b61f..b824d63 100644 --- a/src/components/Multisig.tsx +++ b/src/components/Multisig.tsx @@ -106,7 +106,7 @@ export function MultisigInstance({ multisig }: { multisig: PublicKey }) { const [forceRefresh, setForceRefresh] = useState(false); useEffect(() => { multisigClient.account - .multisig(multisig) + .multisig.fetch(multisig) .then((account: any) => { setMultisigAccount(account); }) @@ -241,7 +241,7 @@ export function NewMultisigDialog({ const { enqueueSnackbar } = useSnackbar(); const [threshold, setThreshold] = useState(2); // @ts-ignore - const zeroAddr = new PublicKey().toString(); + const zeroAddr = new PublicKey("11111111111111111111111111111111").toString(); const [participants, setParticipants] = useState([zeroAddr]); const _onClose = () => { onClose(); @@ -334,7 +334,7 @@ export function NewMultisigDialog({ onClick={() => { const p = [...participants]; // @ts-ignore - p.push(new PublicKey().toString()); + p.push(new PublicKey("11111111111111111111111111111111").toString()); setParticipants(p); }} > @@ -929,7 +929,7 @@ function SetOwnersListItemDetails({ }) { const { multisigClient } = useWallet(); // @ts-ignore - const zeroAddr = new PublicKey().toString(); + const zeroAddr = new PublicKey("11111111111111111111111111111111").toString(); const [participants, setParticipants] = useState([zeroAddr]); const { enqueueSnackbar } = useSnackbar(); const setOwners = async () => { @@ -1010,7 +1010,7 @@ function SetOwnersListItemDetails({ onClick={() => { const p = [...participants]; // @ts-ignore - p.push(new PublicKey().toString()); + p.push(new PublicKey("11111111111111111111111111111111").toString()); setParticipants(p); }} > @@ -1081,7 +1081,7 @@ function UpgradeIdlListItemDetails({ }); const programAddr = new PublicKey(programId as string); const bufferAddr = new PublicKey(buffer as string); - const idlAddr = await anchor.utils.idlAddress(programAddr); + const idlAddr = await idlAddress(programAddr); const [multisigSigner] = await PublicKey.findProgramAddress( [multisig.toBuffer()], multisigClient.programId @@ -1361,3 +1361,17 @@ function setOwnersData(multisigClient, owners) { owners, }); } + + +// Deterministic IDL address as a function of the program id. +async function idlAddress(programId: PublicKey): Promise { + const base = (await PublicKey.findProgramAddress([], programId))[0]; + return await PublicKey.createWithSeed(base, seed(), programId); +} + +// Seed for generating the idlAddress. +function seed(): string { + return "anchor:idl"; +} + +// The \ No newline at end of file diff --git a/src/components/WalletProvider.tsx b/src/components/WalletProvider.tsx index 6d85204..3b07d0c 100644 --- a/src/components/WalletProvider.tsx +++ b/src/components/WalletProvider.tsx @@ -9,8 +9,7 @@ import { useSelector } from "react-redux"; import { Connection, ConfirmOptions } from "@solana/web3.js"; // @ts-ignore import Wallet from "@project-serum/sol-wallet-adapter"; -import { Provider } from "@project-serum/common"; -import { Program } from "@project-serum/anchor"; +import { Program, Provider } from "@project-serum/anchor"; import { State as StoreState } from "../store/reducer"; import MultisigIdl from "../idl"; diff --git a/src/store/reducer.ts b/src/store/reducer.ts index 0798782..84f7b49 100644 --- a/src/store/reducer.ts +++ b/src/store/reducer.ts @@ -58,7 +58,7 @@ export const networks: Networks = { url: "https://solana-api.projectserum.com", explorerClusterSuffix: "", multisigProgramId: new PublicKey( - "A9HAbnCwoD6f2NkZobKFf6buJoN9gUVVvX5PoUnDHS6u" + "msigmtwzgXJHj2ext4XJjCDmpbcMuufFb5cHuwg6Xdt" ), multisigUpgradeAuthority: new PublicKey( "3uztpEgUmvirDBYRXgDamUDZiU5EcgTwArQ2pULtHJPC" diff --git a/yarn.lock b/yarn.lock index 88621e5..1e012b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1522,17 +1522,13 @@ schema-utils "^2.6.5" source-map "^0.7.3" -"@project-serum/anchor@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.4.4.tgz#46ad7a3c3f7a9beaa089c4b265af893e4a8fc1ce" - integrity sha512-gyDQ8dPi7Mob9NisyZMkuw3gRuzp7rvDXgXYME4QVFQrfkDjR3i0ZGed9jFVJWNVOZ6rjIgMeaDe13NhkGJ8Mw== +"@project-serum/anchor@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.14.0.tgz#25ca4d8ac9d8b85ca01a5950c0e5a9154eb43e16" + integrity sha512-FqBofCi3O0Y4DAhmCA0SaakXXoMvNHLq9cVTZLP2/3R0bLO2+goRw0wTgFiKsRMW2YkNVr9cbMzd/MiukbyXsQ== dependencies: - "@project-serum/borsh" "^0.1.1" - "@solana/web3.js" "^1.2.0" - "@types/bn.js" "^4.11.6" - "@types/bs58" "^4.0.1" - "@types/crypto-hash" "^1.1.2" - "@types/pako" "^1.0.1" + "@project-serum/borsh" "^0.2.2" + "@solana/web3.js" "^1.17.0" base64-js "^1.5.1" bn.js "^5.1.2" bs58 "^4.0.1" @@ -1544,6 +1540,7 @@ js-sha256 "^0.9.0" pako "^2.0.3" snake-case "^3.0.4" + toml "^3.0.0" "@project-serum/borsh@^0.1.1": version "0.1.1" @@ -1553,6 +1550,14 @@ bn.js "^5.1.2" buffer-layout "^1.2.0" +"@project-serum/borsh@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.2.tgz#63e558f2d6eb6ab79086bf499dea94da3182498f" + integrity sha512-Ms+aWmGVW6bWd3b0+MWwoaYig2QD0F90h0uhr7AzY3dpCb5e2S6RsRW02vFTfa085pY2VLB7nTZNbFECQ1liTg== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + "@project-serum/common@^0.0.1-beta.3": version "0.0.1-beta.3" resolved "https://registry.yarnpkg.com/@project-serum/common/-/common-0.0.1-beta.3.tgz#53586eaff9d9fd7e8938b1e12080c935b8b6ad07" @@ -1621,6 +1626,13 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@solana/buffer-layout@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-3.0.0.tgz#b9353caeb9a1589cb77a1b145bcb1a9a93114326" + integrity sha512-MVdgAKKL39tEs0l8je0hKaXLQFb7Rdfb0Xg2LjFZd8Lfdazkg6xiS98uAZrEKvaoF3i4M95ei9RydkGIDMeo3w== + dependencies: + buffer "~6.0.3" + "@solana/spl-token@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.3.tgz#6bf7c1a74cd95dabe8b8164e4c13b987db5be3bd" @@ -1656,7 +1668,27 @@ tweetnacl "^1.0.0" ws "^7.0.0" -"@solana/web3.js@^1.2.0", "@solana/web3.js@^1.2.2": +"@solana/web3.js@^1.17.0": + version "1.29.2" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.29.2.tgz#05c162f477c226ee3211f8ee8c1c6d4203e08f54" + integrity sha512-gtoHzimv7upsKF2DIO4/vNfIMKN+cxSImBHvsdiMyp9IPqb8sctsHVU/+80xXl0JKXVKeairDv5RvVnesJYrtw== + dependencies: + "@babel/runtime" "^7.12.5" + "@solana/buffer-layout" "^3.0.0" + bn.js "^5.0.0" + borsh "^0.4.0" + bs58 "^4.0.1" + buffer "6.0.1" + cross-fetch "^3.1.4" + crypto-hash "^1.2.2" + jayson "^3.4.4" + js-sha3 "^0.8.0" + rpc-websockets "^7.4.2" + secp256k1 "^4.0.2" + superstruct "^0.14.2" + tweetnacl "^1.0.0" + +"@solana/web3.js@^1.2.2": version "1.5.0" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.5.0.tgz#4819ecad0408ec55f3d47a227627856002a7358b" integrity sha512-o9Md2wDRKcI7uQksOp6yW6llhfCEm2QyblvM1qTjIbmaxuJn2ID2p0hIsJM7p+p88I/neFt+rodi58kVvk98Cg== @@ -1872,20 +1904,13 @@ dependencies: "@babel/types" "^7.3.0" -"@types/bn.js@^4.11.6": +"@types/bn.js@^4.11.5": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== dependencies: "@types/node" "*" -"@types/bs58@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37" - integrity sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA== - dependencies: - base-x "^3.0.6" - "@types/connect@^3.4.33": version "3.4.34" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" @@ -1893,13 +1918,6 @@ dependencies: "@types/node" "*" -"@types/crypto-hash@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/crypto-hash/-/crypto-hash-1.1.2.tgz#5a993deb0e6ba7c42f86eaa65d9bf563378f4569" - integrity sha512-sOmi+4Go2XKodLV4+lfP+5QMQ+6ZYqRJhK8D/n6xsxIUvlerEulmU9S4Lo02pXCH3qPBeJXEy+g8ZERktDJLSg== - dependencies: - crypto-hash "*" - "@types/eslint@^7.2.6": version "7.2.6" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" @@ -2022,11 +2040,6 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== -"@types/pako@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.1.tgz#33b237f3c9aff44d0f82fe63acffa4a365ef4a61" - integrity sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg== - "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -3023,7 +3036,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-x@^3.0.2, base-x@^3.0.6: +base-x@^3.0.2: version "3.0.8" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== @@ -3145,6 +3158,16 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +borsh@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.4.0.tgz#9dd6defe741627f1315eac2a73df61421f6ddb9f" + integrity sha512-aX6qtLya3K0AkT66CmYWCCDr77qsE9arV05OmdFpmat9qu8Pg9J5tBUPDztAW5fNh/d/MyVG/OYziP52Ndzx1g== + dependencies: + "@types/bn.js" "^4.11.5" + bn.js "^5.0.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3268,7 +3291,7 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4 escalade "^3.1.1" node-releases "^1.1.70" -bs58@^4.0.1: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= @@ -3310,7 +3333,7 @@ buffer@6.0.1: base64-js "^1.3.1" ieee754 "^1.2.1" -buffer@6.0.3, buffer@^6.0.1: +buffer@6.0.3, buffer@^6.0.1, buffer@~6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -4002,6 +4025,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-fetch@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" + integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== + dependencies: + node-fetch "2.6.1" + cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -4039,7 +4069,7 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-hash@*, crypto-hash@^1.2.2, crypto-hash@^1.3.0: +crypto-hash@^1.2.2, crypto-hash@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== @@ -8234,7 +8264,7 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -node-fetch@^2.2.0, node-fetch@^2.6.1: +node-fetch@2.6.1, node-fetch@^2.2.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -11520,6 +11550,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -11636,6 +11671,11 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"