UNPKG

scrypt-ts

Version:

A toolset for building sCrypt smart contract applications on Bitcoin SV network written in typescript.

531 lines (298 loc) 9.76 kB
# CHANGELOG ## 1.4.5 - Pump superagent to `10.1.1`, fixed a public vulnerability with formidable dependency. ## 1.4.4 - Pump scryptlib to `2.2.5` - ## 1.4.3 - Pump scryptlib to `2.2.4` ## 1.4.2 - Pump scryptlib to `2.2.3` ## 1.4.1 - Pump scryptlib to `2.2.2` ## 1.4.0 - just republish with ci ## 1.3.34 - pump scryptlib - remove `bsv` lib, use `@scrypt-inc\bsv` lib - add `random` function for `TestWallet` ## 1.3.31 **Breaking Change** Remove `connect(provider: Provider)` function of the signer. You don't need to call `signer.connect(provider)`. The contract instance only needs to be connected to a signer: ```ts const counter = new Counter(1n); const signer = new TestWallet( myPrivateKey, new DefaultProvider() ) await counter.connect(signer); ``` ## 1.3.22 - fix getNetWork ## 1.3.21 - fix connect - update `DummyProvider` fee ## 1.3.20 - multi call Use respective signer ## 1.3.19 - Fix #482 ## 1.3.18 - support panda 2.0 ## 1.3.17 - optimizing defaultProvider - add `getOffchainUpdates()` to `SmartContract` **breaking change** - remove `offchainUpdates` of `SmartContract` ## 1.3.16 - add `PandaSigner` - implement the following functions in `abstract` Signer: 1. `signRawTransaction` 2. `signTransaction` ## 1.3.14 - TAAL and GorillaPool providers fetch current fee rate upon connect. - WoC provider - lowered fee rate to 1 sat / KB. ## 1.3.13 1. support override `this.lockingScript` 2. support override `this.init()` 3. support access `this.delegateInstance` ## 1.3.11 - add `getDefaultTxBuilder()` ## 1.3.10 - rename `setConstructor()` to `init()` - add `fromUTXO()` ## 1.3.9 - support attaching a NOP script (like 1sat ordinal) to a contract instance. **example:** ```ts const demo = new Demo(1n, 2n) // connect to a signer await demo.connect(getDefaultSigner()) const nopScript = bsv.Script.fromASM("OP_FALSE OP_IF ... OP_ENDIF"); demo.prependNOPScript(nopScript) // contract deployment const deployTx = await demo.deploy(1) console.log('Demo contract deployed: ', deployTx.id) // create instance from transaction let currentInstance = Demo.fromTx(deployTx, 0, {}, nopScript); ``` - add build-ins function `this.timeLock()`, see https://docs.scrypt.io/tutorials/timeLock **example:** ```ts assert(this.timeLock(this.locktime0), 'time lock for locktime0 failed') ``` ## 1.3.8 - augment bsv types with `.toByteString()` - change domain specific byte types to take `ByteString` as init. param instead of `Bytes` - add `Addr` type - add `pubKey2Addr` helper function ## 1.3.7 - fix `this.debug.diffOutputs(outputs: ByteString)` issue. ## 1.3.5 - fix `slice()` issue. - support attaching ordinal inscription to a contract instance. **example:** ```ts const demo = new Demo(1n, 2n) // connect to a signer await demo.connect(getDefaultSigner()) demo.setOrdinal({ content: toByteString("hello, this is demo contract.", true), contentType: "text/plain" }) // contract deployment const deployTx = await demo.deploy(1) console.log('Demo contract deployed: ', deployTx.id) ``` - ## 1.3.4 - fix `TestWallet` issue ## 1.3.3 - fix `fill` issue - verify transaction when `process.env.NETWORK === 'local'` ## 1.3.2 - fix fee issue ## 1.3.1 - auto verify `this.prevouts` ## 1.3.0 - support `this.prevouts` - fix `signer.connect()` - fix auto pay fee ## 1.2.2 - refactor find `scrypt.index.json` file - support auto find tx builder by method name ## 1.1.0 - remove transpiler code ## 1.0.2 - catch websocket error events ## 1.0.1 - add dependencies overrides ## 1.0.0 - support [TAAL Wallet](https://chrome.google.com/webstore/detail/taal-wallet/engokokaoeppkmchbkjeoeimiffobcke?hl=en-GB) - support typescript `5.x.x`, **note:** ```ts If you want to update `scrypt-ts` in your project to the latest `1.0.0` version, just execute `npm install typescript@latest` to upgrade `Typescript` used in your project. ``` - fix known issues ## 0.3.0-beta.2 - fix bsv patch. ## 0.3.0-beta.1 - support typescript `5.x.x` - ## 0.2.4-beta.1 - support typescript `4.9.x` ## 0.2.3-beta.1 - remove `src\contracts` path in `artifacts` directory ## 0.2.2-beta.6 - fix list listUnspent ## 0.2.2-beta.1 - fix Sensible API error - Add prompt information when the provider's network does not match the private key ## 0.2.1-beta.9 - update `len` and `reverseByteString` functions, only `bigint` now ## 0.2.1-beta.8 - add `slice(b: ByteString, start: bigint, end?: bigint): ByteString` issue, `ByteString.slice()` deprecated. - fix auto pay transation fee - fix struct transpiling - `compile()` function breakchange. ## 0.2.1-beta.5 - fix `buildChangeOutput()` issue - pump scryptlib ## 0.2.1-beta.4 - update `MethodCallOptions` - add `MultiContractCallOptions` ```ts export interface MethodCallOptions<T> { ... /** signer does not contain all private keys, it is used when multiple parties are required to perform signature authorization, default is false, only work in single call */ readonly partiallySigned?: boolean; /** execute a contract's public method to to check if arguments are valid, default is true */ readonly exec?: boolean; /** auto add utxo to pay transaction fee, default is true*/ readonly autoPayFee?: boolean; } export interface MultiContractCallOptions { /** verify transaction before send transaction */ readonly verify?: boolean; /** signer does not contain all private keys, it is used when multiple parties are required to perform signature authorization, default is false, only work in single call */ readonly partiallySigned?: boolean; /** auto add utxo to pay transaction fee, default is true*/ readonly autoPayFee?: boolean; } ``` ## 0.2.0-beta.9 - add `tx` field for `ContractCalledEvent` ## 0.2.0-beta.8 - add `tx` field for `ContractCalledEvent` ## 0.2.0-beta.8 - add `Scrypt.contractApi.subscribe()` ## 0.2.0-beta.1 - add `Scrypt.contractApi.xxx` - add `ScryptProvider` - add `Scrypt.init()`: ```ts Scrypt.init({ apiKey: 'alpha_test_api_key', baseUrl: 'https://testnet.api.scrypt.io', }) ``` ## 0.1.9-beta.1 - add `checkMultiSig`. Close #234. - less confusing error on method call w wrong args. Close #311. ## 0.1.8-beta.2 - rename `partialContractTransaction` -> `partialContractTx` , #304 ## 0.1.8-beta.1 - supports call multiple contracts, #285 - remove `transformer` in `ContractArtifact`, #287 - add js doc, #293 ## 0.1.7-beta.5 - add sync state from transation: ```ts const counter = new Counter(0n); counter.syncState(tx, atOutputIndex) ``` - transpiler: to remove code injection ## 0.1.7-beta.3 - update `compilerOptions.target` to fix #253 ## 0.1.7-beta.1 - upgrade `HashedMap` & `HashedSet` - add erc20/erc721 - add more providers - fix issue after webpack minimize build - fix #230 - fix #170 ## 0.1.6-beta.8 - add `this.buildChangeOutput()` - fix #216 - fix #171 - fix #211 - fix #225 - improve err message for Whatsonchain provider - add comments ## 0.1.6-beta.6 - fix `getSignatures` ## 0.1.6-beta.6 - fix `getSignatures` ## 0.1.6-beta.5 - add `DefaultProvider` - rename `findSigFrom` to `findSig` - rename `sigRequiredAddress` to `pubKeyOrAddrToSign`, supports both pubKey and address ## 0.1.6-beta.4 - add buildChangeOutput for SmartContract class, #207 - allow *non-public* methods returns `void`, #206 - fix `static` methods call, #204 - pump scryptlib ## 0.1.6-beta.3 - export `findSigFrom()` ## 0.1.6-beta.2 - fix Contract.clone issue, #186 - refator `toByteString()`, #190 - add `Utils.buildPublicKeyHashOutput()`, #194 - buildins function rename - rename `unlockFrom` -> `to`, `lockTo` -> `from`, #189 - `@prop(true)` cannot be readonly, fix #201 - support `getter` & `setter`, fix #169 - using sensilet api `signTx`, not `signTransaction`, fix #172 ## 0.1.6-beta.1 - support use in browser - Fix [#115](https://github.com/sCrypt-Inc/scrypt-ts/issues/115) - change [getNetwork](https://github.com/sCrypt-Inc/scrypt-ts/blob/0077508889c6e737a3d8008291e7fec989c493b9/src/bsv/abstract-provider.ts#L40) to returns promise - add connected event for provider - remove `SensiletProvider` ## 0.1.5-beta.18 - Fix #164 don't clone unlockFrom and lockTo - Update `.npmignore` ## 0.1.5-beta.15 - change [getNetwork](https://github.com/sCrypt-Inc/scrypt-ts/blob/0077508889c6e737a3d8008291e7fec989c493b9/src/bsv/abstract-provider.ts#L40) to returns promise ## 0.1.5-beta.13 - Fix [#115](https://github.com/sCrypt-Inc/scrypt-ts/issues/115) ## 0.1.5-beta.12 - support use in browser ## 0.1.5-beta.14 - Fix references struct defined in library ## 0.1.5-beta.11 - support use in browser ## 0.1.5-beta.10 - move library `axios` from *devDependencies* to *dependencies* ## 0.1.5-beta.9 - Fix transpiling struct literal ## 0.1.5-beta.8 - Fix transpiling static readonly property, it is different from [compile-time constant](https://scrypt.io/scrypt-ts/getting-started/how-to-write-a-contract#compile-time-constant). ## 0.1.5-beta.7 - add signer - add provoider - support for asynchronous signatures ## 0.1.5-beta.6 - rename fields in `ScriptContext` to be more friendly ## 0.1.5-beta.6 - rename fields in `ScriptContext` to be more friendly ## 0.1.5-beta.5 - update transpiler to popup more friendly error messages - support `HashedMap` and `HashedSet` ## 0.1.5-beta.4 - disallow type `string` and `String` used in `@prop` - implement `assert(condition: any, msg?: string)` ## 0.1.5-beta.2 - support show transpile error in vscode editor - support [OP_PUSH_TX](https://medium.com/@xiaohuiliu/op-push-tx-3d3d279174c1) without transation preimage