bump to latest version of Stacks SDK

This commit is contained in:
Kyle Fang
2024-11-28 05:31:37 +00:00
parent f86011a6b2
commit 6122a551ab
5 changed files with 112 additions and 478 deletions

View File

@@ -10,21 +10,21 @@
"simulation": "tsx simulation/index.ts" "simulation": "tsx simulation/index.ts"
}, },
"dependencies": { "dependencies": {
"@stacks/connect": "^7.2.1", "@stacks/connect": "^7.9.0",
"@stacks/network": "^6.10.0", "@stacks/network": "^7.0.2",
"@stacks/stacks-blockchain-api-types": "^7.14.1", "@stacks/stacks-blockchain-api-types": "^7.14.1",
"@stacks/transactions": "^6.16.1", "@stacks/transactions": "^7.0.2",
"alex-sdk": "^2.1.4", "alex-sdk": "^3.0.0-beta.1",
"c32check": "^2.0.0", "c32check": "^2.0.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0"
"ts-clarity": "^0.0.26"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.0.27", "@types/react": "^18.0.27",
"@types/react-dom": "^18.0.10", "@types/react-dom": "^18.0.10",
"@vitejs/plugin-react": "^4.3.1", "@vitejs/plugin-react": "^4.3.1",
"prettier": "^3.3.2", "prettier": "^3.3.2",
"stxer": "^0.2.4",
"tsx": "^4.19.1", "tsx": "^4.19.1",
"typescript": "^5.4.5", "typescript": "^5.4.5",
"vite": "^5.3.1" "vite": "^5.3.1"

255
pnpm-lock.yaml generated
View File

@@ -9,20 +9,20 @@ importers:
.: .:
dependencies: dependencies:
'@stacks/connect': '@stacks/connect':
specifier: ^7.2.1 specifier: ^7.9.0
version: 7.2.1 version: 7.9.0
'@stacks/network': '@stacks/network':
specifier: ^6.10.0 specifier: ^7.0.2
version: 6.10.0 version: 7.0.2
'@stacks/stacks-blockchain-api-types': '@stacks/stacks-blockchain-api-types':
specifier: ^7.14.1 specifier: ^7.14.1
version: 7.14.1 version: 7.14.1
'@stacks/transactions': '@stacks/transactions':
specifier: ^6.16.1 specifier: ^7.0.2
version: 6.16.1 version: 7.0.2
alex-sdk: alex-sdk:
specifier: ^2.1.4 specifier: ^3.0.0-beta.1
version: 2.1.4(@stacks/network@6.10.0)(@stacks/transactions@6.16.1) version: 3.0.0-beta.1(@stacks/common@7.0.2)(@stacks/network@7.0.2)(@stacks/transactions@7.0.2)
c32check: c32check:
specifier: ^2.0.0 specifier: ^2.0.0
version: 2.0.0 version: 2.0.0
@@ -32,9 +32,6 @@ importers:
react-dom: react-dom:
specifier: ^18.2.0 specifier: ^18.2.0
version: 18.2.0(react@18.2.0) version: 18.2.0(react@18.2.0)
ts-clarity:
specifier: ^0.0.26
version: 0.0.26(typescript@5.4.5)
devDependencies: devDependencies:
'@types/react': '@types/react':
specifier: ^18.0.27 specifier: ^18.0.27
@@ -48,6 +45,9 @@ importers:
prettier: prettier:
specifier: ^3.3.2 specifier: ^3.3.2
version: 3.3.2 version: 3.3.2
stxer:
specifier: ^0.2.4
version: 0.2.4(typescript@5.4.5)
tsx: tsx:
specifier: ^4.19.1 specifier: ^4.19.1
version: 4.19.1 version: 4.19.1
@@ -591,35 +591,32 @@ packages:
'@scure/bip39@1.1.0': '@scure/bip39@1.1.0':
resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==}
'@stacks/auth@6.9.0': '@stacks/auth@7.0.2':
resolution: {integrity: sha512-tBOB+H/96TUNK9pKmr1YQoiIItUFp2ms5RCNYPSjy3/lbIYYJYtw/O2fOS78fVQvCCpuObhhO65AVsrE/IzQeg==} resolution: {integrity: sha512-1N0ylkK9mz6RqIH3SbuIvoUG4eTgSkun7hHiPirScGCyXvmugjereGdTowSRSrEnl32/qrnquAAaO7a1XF6TMA==}
'@stacks/common@6.10.0':
resolution: {integrity: sha512-6x5Z7AKd9/kj3+DYE9xIDIkFLHihBH614i2wqrZIjN02WxVo063hWSjIlUxlx8P4gl6olVzlOy5LzhLJD9OP0A==}
'@stacks/common@6.16.0': '@stacks/common@6.16.0':
resolution: {integrity: sha512-PnzvhrdGRMVZvxTulitlYafSK4l02gPCBBoI9QEoTqgSnv62oaOXhYAUUkTMFKxdHW1seVEwZsrahuXiZPIAwg==} resolution: {integrity: sha512-PnzvhrdGRMVZvxTulitlYafSK4l02gPCBBoI9QEoTqgSnv62oaOXhYAUUkTMFKxdHW1seVEwZsrahuXiZPIAwg==}
'@stacks/common@6.8.1': '@stacks/common@7.0.2':
resolution: {integrity: sha512-ewL9GLZNQYa5a/3K4xSHlHIgHkD4rwWW/QEaPId8zQIaL+1O9qCaF4LX9orNQeOmEk8kvG0x2xGV54fXKCZeWQ==} resolution: {integrity: sha512-+RSecHdkxOtswmE4tDDoZlYEuULpnTQVeDIG5eZ32opK8cFxf4EugAcK9CsIsHx/Se1yTEaQ21WGATmJGK84lQ==}
'@stacks/connect-ui@6.0.1': '@stacks/connect-ui@6.5.0':
resolution: {integrity: sha512-DOB2UdwLJAznHfsOmloTzK7JDIfxwUq+GqEH6z0snxA3Gsu2aernlLhwUW1QLFXQtPw/fUp1ty+re71qHUc6tg==} resolution: {integrity: sha512-iXSpl2NxrjERBqtGgkZp0tX1uJgdWZXmsNo3I0cJYYTTbieSAE/Al9nTYc1wLTPW5w5oVvZEkQKo90WIrHR8Rw==}
'@stacks/connect@7.2.1': '@stacks/connect@7.9.0':
resolution: {integrity: sha512-AWFvyVWH4z9pbPA+iFoFpVCABcGjJ8ZsqZNroNQOyAq6DVSM+GBSMnNXqnugUnKUE9+IYM7TNKfvKkzN1temiQ==} resolution: {integrity: sha512-UPv2UQpZwnNPYodL4bf+6Pu3kHY9BcRabAgAbmDajn3RFWvDrnOMmvLqJRGOvo5fEm8vSwxAGY8R7BSOPmlLdg==}
'@stacks/encryption@6.9.0': '@stacks/encryption@7.0.2':
resolution: {integrity: sha512-hbpZ47eYgw9ZH5ly+GSgvw2Ffsu9L6d++2XIhvYSzL7yxYl4m1+FV5QYdJthJ2AS3vi8cI5otE254HTfCrhKzg==} resolution: {integrity: sha512-3evRvxPqVzQAhcZ8uacQrVfAETUMIV8VyKkHGsd4QZroGWlvXQheLV3CFeDttFb304QcKq/oKv1clOvQ2shaAw==}
'@stacks/network@6.10.0':
resolution: {integrity: sha512-mbiZ8nlsyy77ndmBdaqhHXii22IFdK4ThRcOQs9j/O00DkAr04jCM4GV5Q+VLUnZ9OBoJq7yOV7Pf6jglh+0hw==}
'@stacks/network@6.16.0': '@stacks/network@6.16.0':
resolution: {integrity: sha512-uqz9Nb6uf+SeyCKENJN+idt51HAfEeggQKrOMfGjpAeFgZV2CR66soB/ci9+OVQR/SURvasncAz2ScI1blfS8A==} resolution: {integrity: sha512-uqz9Nb6uf+SeyCKENJN+idt51HAfEeggQKrOMfGjpAeFgZV2CR66soB/ci9+OVQR/SURvasncAz2ScI1blfS8A==}
'@stacks/profile@6.9.0': '@stacks/network@7.0.2':
resolution: {integrity: sha512-sIR60DsAHi8C6zGqKqSe1r2hXTMHgwrJkX3fAaP3de40KeplZ2bkE+0B83yismEeU2baNc+AukyVvWJv0PfP0A==} resolution: {integrity: sha512-XzHnoWqku/jRrTgMXhmh3c+I0O9vDH24KlhzGDZtBu+8CGGyHNPAZzGwvoUShonMXrXjEnfO9IYQwV5aJhfv6g==}
'@stacks/profile@7.0.2':
resolution: {integrity: sha512-BJis1ZAP2yzv0IFaJcm4mZFtauizcB1zBVpAeOSX06BDEUgM8h0L8uRvAbfTvSuSjsveNgblucZouZMSEsQMGA==}
'@stacks/stacks-blockchain-api-types@7.14.1': '@stacks/stacks-blockchain-api-types@7.14.1':
resolution: {integrity: sha512-65hvhXxC+EUqHJAQsqlBCqXB+zwfxZICSKYJugdg6BCp9I9qniyfz5XyQeC4RMVo0tgEoRdS/b5ZCFo5kLWmxA==} resolution: {integrity: sha512-65hvhXxC+EUqHJAQsqlBCqXB+zwfxZICSKYJugdg6BCp9I9qniyfz5XyQeC4RMVo0tgEoRdS/b5ZCFo5kLWmxA==}
@@ -627,6 +624,9 @@ packages:
'@stacks/transactions@6.16.1': '@stacks/transactions@6.16.1':
resolution: {integrity: sha512-yCtUM+8IN0QJbnnlFhY1wBW7Q30Cxje3Zmy8DgqdBoM/EPPWadez/8wNWFANVAMyUZeQ9V/FY+8MAw4E+pCReA==} resolution: {integrity: sha512-yCtUM+8IN0QJbnnlFhY1wBW7Q30Cxje3Zmy8DgqdBoM/EPPWadez/8wNWFANVAMyUZeQ9V/FY+8MAw4E+pCReA==}
'@stacks/transactions@7.0.2':
resolution: {integrity: sha512-m2bvchqUeYv1ttXuC0EukW8UX4xBXTDcYb8bXmfI1RG89HXAvvCCgr5aiadU6zbutgoXvm8mquDt3nww0PO4Jg==}
'@stencil/core@2.22.3': '@stencil/core@2.22.3':
resolution: {integrity: sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==} resolution: {integrity: sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==}
engines: {node: '>=12.10.0', npm: '>=6.0.0'} engines: {node: '>=12.10.0', npm: '>=6.0.0'}
@@ -671,12 +671,12 @@ packages:
peerDependencies: peerDependencies:
vite: ^4.2.0 || ^5.0.0 vite: ^4.2.0 || ^5.0.0
alex-sdk@2.1.4: alex-sdk@3.0.0-beta.1:
resolution: {integrity: sha512-fFFyk3iwioqRsNOiWQyVXl+5vjlIU0ez3Ko9JnE6JBt8F8pNLMAkPIBlZA/nW/EhdFrrTuyuT0CHxH22GumQ5w==} resolution: {integrity: sha512-iKtMU9ALoireV2vruVyiwp/lGwOLZAj4ePtxXouRsuEmipFbKPO1YUZqYui0biqH2T7BihzulMJnLCEZ9cTltg==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
'@stacks/network': ^6.3.0 '@stacks/network': ^7.0.2
'@stacks/transactions': ^6.2.0 '@stacks/transactions': ^7.0.2
ansi-regex@5.0.1: ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
@@ -717,9 +717,6 @@ packages:
resolution: {integrity: sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA==} resolution: {integrity: sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA==}
engines: {node: '>=8'} engines: {node: '>=8'}
call-bind@1.0.2:
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
caniuse-lite@1.0.30001634: caniuse-lite@1.0.30001634:
resolution: {integrity: sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==} resolution: {integrity: sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==}
@@ -735,11 +732,12 @@ packages:
typescript: typescript:
optional: true optional: true
clarity-codegen@0.5.2: clarity-codegen@1.0.0-beta.1:
resolution: {integrity: sha512-t0uvboeZTII7n2lgobAxcQnhyjXwbUKYdUKJA3yjoaOXPvtr5i2zFV7H1E6ZeDMfqd3vIksMPvpdFfXum9SoNQ==} resolution: {integrity: sha512-cEyEpOoR3xnTMmGWxycWFH0+Xgmuyhw3ueydg5TFeap1ZXh4/aoxqYIg7JwALlv09wZv/JXe3H+yodMra31pDQ==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@stacks/transactions': '*' '@stacks/common': ^7.0.2
'@stacks/transactions': ^7.0.2
cliui@8.0.1: cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
@@ -829,9 +827,6 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin] os: [darwin]
function-bind@1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
gensync@1.0.0-beta.2: gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@@ -840,9 +835,6 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*} engines: {node: 6.* || 8.* || >= 10.*}
get-intrinsic@1.2.1:
resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
get-tsconfig@4.8.1: get-tsconfig@4.8.1:
resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
@@ -854,18 +846,6 @@ packages:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'} engines: {node: '>=4'}
has-proto@1.0.1:
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
engines: {node: '>= 0.4'}
has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
has@1.0.4:
resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==}
engines: {node: '>= 0.4.0'}
is-fullwidth-code-point@3.0.0: is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -927,9 +907,6 @@ packages:
node-releases@2.0.14: node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
picocolors@1.0.0: picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
@@ -948,13 +925,6 @@ packages:
proxy-from-env@1.1.0: proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
punycode@1.4.1:
resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
qs@6.11.2:
resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==}
engines: {node: '>=0.6'}
react-dom@18.2.0: react-dom@18.2.0:
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
peerDependencies: peerDependencies:
@@ -997,9 +967,6 @@ packages:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true hasBin: true
side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
source-map-js@1.2.0: source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@@ -1012,6 +979,10 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'} engines: {node: '>=8'}
stxer@0.2.4:
resolution: {integrity: sha512-OGWnNF2D298I8Z4cRS9AFP5pZaFa7YUqxaJUOhoCMBzxUxO9sMtGw6h4sxyvprTUSvTT3GDcF/9YDfGF6lZkpg==}
engines: {node: '>=12'}
supports-color@5.5.0: supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'} engines: {node: '>=4'}
@@ -1042,9 +1013,6 @@ packages:
peerDependencies: peerDependencies:
browserslist: '>= 4.21.0' browserslist: '>= 4.21.0'
url@0.11.3:
resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==}
varuint-bitcoin@1.1.2: varuint-bitcoin@1.1.2:
resolution: {integrity: sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==} resolution: {integrity: sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==}
@@ -1506,67 +1474,54 @@ snapshots:
'@noble/hashes': 1.1.5 '@noble/hashes': 1.1.5
'@scure/base': 1.1.3 '@scure/base': 1.1.3
'@stacks/auth@6.9.0': '@stacks/auth@7.0.2':
dependencies: dependencies:
'@stacks/common': 6.8.1 '@noble/secp256k1': 1.7.1
'@stacks/encryption': 6.9.0 '@stacks/common': 7.0.2
'@stacks/network': 6.10.0 '@stacks/encryption': 7.0.2
'@stacks/profile': 6.9.0 '@stacks/network': 7.0.2
'@stacks/profile': 7.0.2
cross-fetch: 3.1.8 cross-fetch: 3.1.8
jsontokens: 4.0.1 jsontokens: 4.0.1
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
'@stacks/common@6.10.0':
dependencies:
'@types/bn.js': 5.1.2
'@types/node': 18.18.4
'@stacks/common@6.16.0': '@stacks/common@6.16.0':
dependencies: dependencies:
'@types/bn.js': 5.1.2 '@types/bn.js': 5.1.2
'@types/node': 18.18.4 '@types/node': 18.18.4
'@stacks/common@6.8.1': '@stacks/common@7.0.2': {}
dependencies:
'@types/bn.js': 5.1.2
'@types/node': 18.18.4
'@stacks/connect-ui@6.0.1': '@stacks/connect-ui@6.5.0':
dependencies: dependencies:
'@stencil/core': 2.22.3 '@stencil/core': 2.22.3
'@stacks/connect@7.2.1': '@stacks/connect@7.9.0':
dependencies: dependencies:
'@stacks/auth': 6.9.0 '@stacks/auth': 7.0.2
'@stacks/connect-ui': 6.0.1 '@stacks/common': 7.0.2
'@stacks/network': 6.10.0 '@stacks/connect-ui': 6.5.0
'@stacks/profile': 6.9.0 '@stacks/network': 7.0.2
'@stacks/transactions': 6.16.1 '@stacks/network-v6': '@stacks/network@6.16.0'
'@stacks/profile': 7.0.2
'@stacks/transactions': 7.0.2
'@stacks/transactions-v6': '@stacks/transactions@6.16.1'
jsontokens: 4.0.1 jsontokens: 4.0.1
url: 0.11.3
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
'@stacks/encryption@6.9.0': '@stacks/encryption@7.0.2':
dependencies: dependencies:
'@noble/hashes': 1.1.5 '@noble/hashes': 1.1.5
'@noble/secp256k1': 1.7.1 '@noble/secp256k1': 1.7.1
'@scure/bip39': 1.1.0 '@scure/bip39': 1.1.0
'@stacks/common': 6.8.1 '@stacks/common': 7.0.2
'@types/node': 18.18.4
base64-js: 1.5.1 base64-js: 1.5.1
bs58: 5.0.0 bs58: 5.0.0
ripemd160-min: 0.0.6 ripemd160-min: 0.0.6
varuint-bitcoin: 1.1.2 varuint-bitcoin: 1.1.2
'@stacks/network@6.10.0':
dependencies:
'@stacks/common': 6.10.0
cross-fetch: 3.1.8
transitivePeerDependencies:
- encoding
'@stacks/network@6.16.0': '@stacks/network@6.16.0':
dependencies: dependencies:
'@stacks/common': 6.16.0 '@stacks/common': 6.16.0
@@ -1574,11 +1529,18 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
'@stacks/profile@6.9.0': '@stacks/network@7.0.2':
dependencies: dependencies:
'@stacks/common': 6.8.1 '@stacks/common': 7.0.2
'@stacks/network': 6.10.0 cross-fetch: 3.1.8
'@stacks/transactions': 6.16.1 transitivePeerDependencies:
- encoding
'@stacks/profile@7.0.2':
dependencies:
'@stacks/common': 7.0.2
'@stacks/network': 7.0.2
'@stacks/transactions': 7.0.2
jsontokens: 4.0.1 jsontokens: 4.0.1
schema-inspector: 2.1.0 schema-inspector: 2.1.0
zone-file: 2.0.0-beta.3 zone-file: 2.0.0-beta.3
@@ -1598,6 +1560,17 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
'@stacks/transactions@7.0.2':
dependencies:
'@noble/hashes': 1.1.5
'@noble/secp256k1': 1.7.1
'@stacks/common': 7.0.2
'@stacks/network': 7.0.2
c32check: 2.0.0
lodash.clonedeep: 4.5.0
transitivePeerDependencies:
- encoding
'@stencil/core@2.22.3': {} '@stencil/core@2.22.3': {}
'@types/babel__core@7.20.5': '@types/babel__core@7.20.5':
@@ -1654,12 +1627,13 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
alex-sdk@2.1.4(@stacks/network@6.10.0)(@stacks/transactions@6.16.1): alex-sdk@3.0.0-beta.1(@stacks/common@7.0.2)(@stacks/network@7.0.2)(@stacks/transactions@7.0.2):
dependencies: dependencies:
'@stacks/network': 6.10.0 '@stacks/network': 7.0.2
'@stacks/transactions': 6.16.1 '@stacks/transactions': 7.0.2
clarity-codegen: 0.5.2(@stacks/transactions@6.16.1) clarity-codegen: 1.0.0-beta.1(@stacks/common@7.0.2)(@stacks/transactions@7.0.2)
transitivePeerDependencies: transitivePeerDependencies:
- '@stacks/common'
- debug - debug
ansi-regex@5.0.1: {} ansi-regex@5.0.1: {}
@@ -1706,11 +1680,6 @@ snapshots:
'@noble/hashes': 1.3.2 '@noble/hashes': 1.3.2
base-x: 4.0.0 base-x: 4.0.0
call-bind@1.0.2:
dependencies:
function-bind: 1.1.1
get-intrinsic: 1.2.1
caniuse-lite@1.0.30001634: {} caniuse-lite@1.0.30001634: {}
chalk@2.4.2: chalk@2.4.2:
@@ -1723,10 +1692,11 @@ snapshots:
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.4.5
clarity-codegen@0.5.2(@stacks/transactions@6.16.1): clarity-codegen@1.0.0-beta.1(@stacks/common@7.0.2)(@stacks/transactions@7.0.2):
dependencies: dependencies:
'@stacks/common': 7.0.2
'@stacks/stacks-blockchain-api-types': 7.14.1 '@stacks/stacks-blockchain-api-types': 7.14.1
'@stacks/transactions': 6.16.1 '@stacks/transactions': 7.0.2
axios: 1.7.2 axios: 1.7.2
lodash: 4.17.21 lodash: 4.17.21
yargs: 17.7.2 yargs: 17.7.2
@@ -1850,19 +1820,10 @@ snapshots:
fsevents@2.3.3: fsevents@2.3.3:
optional: true optional: true
function-bind@1.1.1: {}
gensync@1.0.0-beta.2: {} gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: {} get-caller-file@2.0.5: {}
get-intrinsic@1.2.1:
dependencies:
function-bind: 1.1.1
has: 1.0.4
has-proto: 1.0.1
has-symbols: 1.0.3
get-tsconfig@4.8.1: get-tsconfig@4.8.1:
dependencies: dependencies:
resolve-pkg-maps: 1.0.0 resolve-pkg-maps: 1.0.0
@@ -1871,12 +1832,6 @@ snapshots:
has-flag@3.0.0: {} has-flag@3.0.0: {}
has-proto@1.0.1: {}
has-symbols@1.0.3: {}
has@1.0.4: {}
is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@3.0.0: {}
js-tokens@4.0.0: {} js-tokens@4.0.0: {}
@@ -1919,8 +1874,6 @@ snapshots:
node-releases@2.0.14: {} node-releases@2.0.14: {}
object-inspect@1.12.3: {}
picocolors@1.0.0: {} picocolors@1.0.0: {}
picocolors@1.0.1: {} picocolors@1.0.1: {}
@@ -1935,12 +1888,6 @@ snapshots:
proxy-from-env@1.1.0: {} proxy-from-env@1.1.0: {}
punycode@1.4.1: {}
qs@6.11.2:
dependencies:
side-channel: 1.0.4
react-dom@18.2.0(react@18.2.0): react-dom@18.2.0(react@18.2.0):
dependencies: dependencies:
loose-envify: 1.4.0 loose-envify: 1.4.0
@@ -1993,12 +1940,6 @@ snapshots:
semver@6.3.1: {} semver@6.3.1: {}
side-channel@1.0.4:
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.2.1
object-inspect: 1.12.3
source-map-js@1.2.0: {} source-map-js@1.2.0: {}
string-width@4.2.3: string-width@4.2.3:
@@ -2011,6 +1952,17 @@ snapshots:
dependencies: dependencies:
ansi-regex: 5.0.1 ansi-regex: 5.0.1
stxer@0.2.4(typescript@5.4.5):
dependencies:
'@stacks/network': 7.0.2
'@stacks/stacks-blockchain-api-types': 7.14.1
'@stacks/transactions': 7.0.2
c32check: 2.0.0
ts-clarity: 0.0.26(typescript@5.4.5)
transitivePeerDependencies:
- encoding
- typescript
supports-color@5.5.0: supports-color@5.5.0:
dependencies: dependencies:
has-flag: 3.0.0 has-flag: 3.0.0
@@ -2044,11 +1996,6 @@ snapshots:
escalade: 3.1.2 escalade: 3.1.2
picocolors: 1.0.1 picocolors: 1.0.1
url@0.11.3:
dependencies:
punycode: 1.4.1
qs: 6.11.2
varuint-bitcoin@1.1.2: varuint-bitcoin@1.1.2:
dependencies: dependencies:
safe-buffer: 5.2.1 safe-buffer: 5.2.1

View File

@@ -1,5 +1,5 @@
import { AlexSDK, Currency } from "alex-sdk"; import { AlexSDK, Currency } from "alex-sdk";
import { SimulationBuilder } from "./stxer"; import { SimulationBuilder } from "stxer";
const sdk = new AlexSDK() const sdk = new AlexSDK()
const addr = "SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER" const addr = "SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER"

View File

@@ -1,313 +0,0 @@
import { AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';
import { Block } from '@stacks/stacks-blockchain-api-types';
import { StacksMainnet } from '@stacks/network';
import {
AnchorMode,
ClarityValue,
PostConditionMode,
type StacksTransaction,
bufferCV,
contractPrincipalCV,
makeUnsignedContractCall,
makeUnsignedContractDeploy,
makeUnsignedSTXTokenTransfer,
serializeCV,
stringAsciiCV,
tupleCV,
uintCV,
} from '@stacks/transactions';
import { c32addressDecode } from 'c32check';
// current beta api endpoint
const SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';
function runTx(tx: StacksTransaction) {
// type 0: run transaction
return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });
}
export interface SimulationEval {
contract_id: string;
code: string;
}
export function runEval({ contract_id, code }: SimulationEval) {
const [contract_address, contract_name] = contract_id.split('.');
// type 1: eval arbitrary code inside a contract
return tupleCV({
type: uintCV(1),
data: bufferCV(
serializeCV(
tupleCV({
contract: contractPrincipalCV(contract_address, contract_name),
code: stringAsciiCV(code),
})
)
),
});
}
export async function runSimulation(
block_hash: string,
block_height: number,
txs: (StacksTransaction | SimulationEval)[]
) {
const body = Buffer.concat([
Buffer.from('sim-v1'),
Buffer.alloc(8),
Buffer.from(
block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,
'hex'
),
...txs
.map((t) => {
return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);
})
.map((t) => serializeCV(t)),
]);
body.writeBigUInt64BE(BigInt(block_height), 6);
const rs = await fetch(SIMULATION_API_ENDPOINT, {
method: 'POST',
body,
}).then(async (rs) => {
const response = await rs.text();
if (!response.startsWith('{')) {
throw new Error(`failed to submit simulation: ${response}`);
}
// console.log(response);
return JSON.parse(response) as { id: string };
});
return rs.id;
}
export class SimulationBuilder {
public static new() {
return new SimulationBuilder();
}
private block = NaN;
private sender = '';
private steps: (
| {
// contract call
contract_id: string;
function_name: string;
function_args?: ClarityValue[];
sender: string;
fee: number;
}
| {
// contract deploy
contract_name: string;
source_code: string;
deployer: string;
fee: number;
}
| {
// STX transfer
recipient: string;
amount: number;
sender: string;
fee: number;
}
| SimulationEval
)[] = [];
public useBlockHeight(block: number) {
this.block = block;
return this;
}
public withSender(address: string) {
this.sender = address;
return this;
}
public addSTXTransfer(params: {
recipient: string;
amount: number;
sender?: string;
fee?: number;
}) {
if (params.sender == null && this.sender === '') {
throw new Error(
'Please specify a sender with useSender or adding a sender paramenter'
);
}
this.steps.push({
...params,
sender: params.sender ?? this.sender,
fee: params.fee ?? 0,
});
return this;
}
public addContractCall(params: {
contract_id: string;
function_name: string;
function_args?: ClarityValue[];
sender?: string;
fee?: number;
}) {
if (params.sender == null && this.sender === '') {
throw new Error(
'Please specify a sender with useSender or adding a sender paramenter'
);
}
this.steps.push({
...params,
sender: params.sender ?? this.sender,
fee: params.fee ?? 0,
});
return this;
}
public addContractDeploy(params: {
contract_name: string;
source_code: string;
deployer?: string;
fee?: number;
}) {
if (params.deployer == null && this.sender === '') {
throw new Error(
'Please specify a deployer with useSender or adding a deployer paramenter'
);
}
this.steps.push({
...params,
deployer: params.deployer ?? this.sender,
fee: params.fee ?? 0,
});
return this;
}
public addEvalCode(inside_contract_id: string, code: string) {
this.steps.push({
contract_id: inside_contract_id,
code,
});
return this;
}
public addMapRead(contract_id: string, map: string, key: string) {
this.steps.push({
contract_id,
code: `(map-get ${map} ${key})`,
});
return this;
}
public addVarRead(contract_id: string, variable: string) {
this.steps.push({
contract_id,
code: `(var-get ${variable})`,
});
return this;
}
private async getBlockInfo() {
if (Number.isNaN(this.block)) {
const { stacks_tip_height } = await getNodeInfo();
this.block = stacks_tip_height;
}
const info: Block = await richFetch(
`https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`
).then((r) => r.json());
if (
info.height !== this.block ||
typeof info.hash !== 'string' ||
!info.hash.startsWith('0x')
) {
throw new Error(
`failed to get block info for block height ${this.block}`
);
}
return {
block_height: this.block,
block_hash: info.hash.substring(2),
index_block_hash: info.index_block_hash.substring(2),
};
}
public async run() {
console.log(
`--------------------------------
This product can never exist without your support!
We receive sponsorship funds with:
SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER
Feedbacks and feature requests are welcome.
To get in touch: contact@stxer.xyz
--------------------------------`
);
const block = await this.getBlockInfo();
console.log(
`Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`
);
const txs: (StacksTransaction | SimulationEval)[] = [];
const nonce_by_address = new Map<string, number>();
const nextNonce = async (sender: string) => {
let nonce = nonce_by_address.get(sender);
if (nonce == null) {
const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash
}`;
const account: AccountDataResponse = await richFetch(url).then((r) =>
r.json()
);
nonce_by_address.set(sender, account.nonce + 1);
return account.nonce;
}
nonce_by_address.set(sender, nonce + 1);
return nonce;
};
for (const step of this.steps) {
if ('sender' in step && 'function_name' in step) {
const nonce = await nextNonce(step.sender);
const [contractAddress, contractName] = step.contract_id.split('.');
const tx = await makeUnsignedContractCall({
contractAddress,
contractName,
functionName: step.function_name,
functionArgs: step.function_args ?? [],
nonce,
network: new StacksMainnet(),
publicKey: '',
postConditionMode: PostConditionMode.Allow,
anchorMode: AnchorMode.Any,
fee: step.fee,
});
tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
txs.push(tx);
} else if ('sender' in step && 'recipient' in step) {
const nonce = await nextNonce(step.sender);
const tx = await makeUnsignedSTXTokenTransfer({
recipient: step.recipient,
amount: step.amount,
nonce,
network: new StacksMainnet(),
publicKey: '',
anchorMode: AnchorMode.Any,
fee: step.fee,
});
tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
txs.push(tx);
} else if ('deployer' in step) {
const nonce = await nextNonce(step.deployer);
const tx = await makeUnsignedContractDeploy({
contractName: step.contract_name,
codeBody: step.source_code,
nonce,
network: new StacksMainnet(),
publicKey: '',
postConditionMode: PostConditionMode.Allow,
anchorMode: AnchorMode.Any,
fee: step.fee,
});
tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];
txs.push(tx);
} else if ('code' in step) {
txs.push(step);
} else {
console.log(`Invalid simulation step:`, step);
}
}
const id = await runSimulation(block.block_hash, block.block_height, txs);
console.log(
`Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`
);
return id;
}
}

View File

@@ -1,6 +1,6 @@
import { useCallback, useEffect, useState } from "react"; import { useCallback, useEffect, useState } from "react";
import "./App.css"; import "./App.css";
import { StacksMainnet } from "@stacks/network"; import { STACKS_MAINNET } from "@stacks/network";
import { import {
AppConfig, AppConfig,
openContractCall, openContractCall,
@@ -46,9 +46,9 @@ function App() {
}); });
}, []); }, []);
const [from, setFrom] = useState<Currency>(Currency.STX);
const [amount, setAmount] = useState(""); const [amount, setAmount] = useState("");
const [to, setTo] = useState<Currency>("token-alex" as Currency); const [from, setFrom] = useState<Currency>(Currency.STX);
const [to, setTo] = useState<Currency>(Currency.ALEX);
const valid = const valid =
from != null && from != null &&
@@ -163,7 +163,7 @@ function App() {
); );
await openContractCall({ await openContractCall({
...tx, ...tx,
network: new StacksMainnet(), network: STACKS_MAINNET,
}); });
}} }}
> >