@btc-vision/btc-runtime 1.9.11 → 1.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -402,7 +402,7 @@ export abstract class OP20 extends ReentrancyGuard implements IOP20 {
|
|
|
402
402
|
return senderMap.get(spender);
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
-
protected _transfer(from: Address, to: Address, amount: u256
|
|
405
|
+
protected _transfer(from: Address, to: Address, amount: u256): void {
|
|
406
406
|
if (from === Address.zero() || from === Address.dead()) {
|
|
407
407
|
throw new Revert('Invalid sender');
|
|
408
408
|
}
|
|
@@ -421,22 +421,17 @@ export abstract class OP20 extends ReentrancyGuard implements IOP20 {
|
|
|
421
421
|
const toBal: u256 = this.balanceOfMap.get(to);
|
|
422
422
|
this.balanceOfMap.set(to, SafeMath.add(toBal, amount));
|
|
423
423
|
|
|
424
|
-
|
|
425
|
-
this.createTransferredEvent(Blockchain.tx.sender, from, to, amount);
|
|
426
|
-
}
|
|
424
|
+
this.createTransferredEvent(Blockchain.tx.sender, from, to, amount);
|
|
427
425
|
}
|
|
428
426
|
|
|
429
427
|
protected _safeTransfer(from: Address, to: Address, amount: u256, data: Uint8Array): void {
|
|
430
|
-
this._transfer(from, to, amount
|
|
428
|
+
this._transfer(from, to, amount);
|
|
431
429
|
|
|
432
430
|
if (Blockchain.isContract(to)) {
|
|
433
431
|
// In CALLBACK mode, the guard allows depth up to 1
|
|
434
432
|
// In STANDARD mode, the guard blocks all reentrancy
|
|
435
433
|
this._callOnOP20Received(from, to, amount, data);
|
|
436
434
|
}
|
|
437
|
-
|
|
438
|
-
// Fire event at the end if everything succeeded indicating a successful transfer
|
|
439
|
-
this.createTransferredEvent(Blockchain.tx.sender, from, to, amount);
|
|
440
435
|
}
|
|
441
436
|
|
|
442
437
|
protected _spendAllowance(owner: Address, spender: Address, amount: u256): void {
|
|
@@ -10,6 +10,8 @@ import {
|
|
|
10
10
|
U32_BYTE_LENGTH,
|
|
11
11
|
} from '../utils';
|
|
12
12
|
|
|
13
|
+
export const transferSignature = 'transfer(address,uint256)';
|
|
14
|
+
export const transferFromSignature = 'transferFrom(address,address,uint256)';
|
|
13
15
|
export const SafeTransferSignature = 'safeTransfer(address,uint256,bytes)';
|
|
14
16
|
export const SafeTransferFromSignature = 'safeTransferFrom(address,address,uint256,bytes)';
|
|
15
17
|
export const IncreaseAllowanceSignature = 'increaseAllowance(address,uint256)';
|
|
@@ -26,14 +28,22 @@ export class TransferHelper {
|
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
public static get TRANSFER_SELECTOR(): Selector {
|
|
29
|
-
return encodeSelector(
|
|
31
|
+
return encodeSelector(transferSignature);
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
public static get TRANSFER_FROM_SELECTOR(): Selector {
|
|
35
|
+
return encodeSelector(transferFromSignature);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public static get SAFE_TRANSFER_SELECTOR(): Selector {
|
|
39
|
+
return encodeSelector(SafeTransferSignature);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public static get SAFE_TRANSFER_FROM_SELECTOR(): Selector {
|
|
33
43
|
return encodeSelector(SafeTransferFromSignature);
|
|
34
44
|
}
|
|
35
45
|
|
|
36
|
-
public static
|
|
46
|
+
public static increaseAllowance(token: Address, spender: Address, amount: u256): void {
|
|
37
47
|
const calldata = new BytesWriter(
|
|
38
48
|
SELECTOR_BYTE_LENGTH + ADDRESS_BYTE_LENGTH + U256_BYTE_LENGTH,
|
|
39
49
|
);
|
|
@@ -44,7 +54,7 @@ export class TransferHelper {
|
|
|
44
54
|
Blockchain.call(token, calldata);
|
|
45
55
|
}
|
|
46
56
|
|
|
47
|
-
public static
|
|
57
|
+
public static decreaseAllowance(token: Address, spender: Address, amount: u256): void {
|
|
48
58
|
const calldata = new BytesWriter(
|
|
49
59
|
SELECTOR_BYTE_LENGTH + ADDRESS_BYTE_LENGTH + U256_BYTE_LENGTH,
|
|
50
60
|
);
|
|
@@ -55,6 +65,42 @@ export class TransferHelper {
|
|
|
55
65
|
Blockchain.call(token, calldata);
|
|
56
66
|
}
|
|
57
67
|
|
|
68
|
+
public static transfer(
|
|
69
|
+
token: Address,
|
|
70
|
+
to: Address,
|
|
71
|
+
amount: u256
|
|
72
|
+
): void {
|
|
73
|
+
const calldata = new BytesWriter(
|
|
74
|
+
SELECTOR_BYTE_LENGTH +
|
|
75
|
+
ADDRESS_BYTE_LENGTH +
|
|
76
|
+
U256_BYTE_LENGTH
|
|
77
|
+
);
|
|
78
|
+
calldata.writeSelector(this.TRANSFER_SELECTOR);
|
|
79
|
+
calldata.writeAddress(to);
|
|
80
|
+
calldata.writeU256(amount);
|
|
81
|
+
|
|
82
|
+
Blockchain.call(token, calldata);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public static transferFrom(
|
|
86
|
+
token: Address,
|
|
87
|
+
from: Address,
|
|
88
|
+
to: Address,
|
|
89
|
+
amount: u256
|
|
90
|
+
): void {
|
|
91
|
+
const calldata = new BytesWriter(
|
|
92
|
+
SELECTOR_BYTE_LENGTH +
|
|
93
|
+
ADDRESS_BYTE_LENGTH * 2 +
|
|
94
|
+
U256_BYTE_LENGTH
|
|
95
|
+
);
|
|
96
|
+
calldata.writeSelector(this.TRANSFER_FROM_SELECTOR);
|
|
97
|
+
calldata.writeAddress(from);
|
|
98
|
+
calldata.writeAddress(to);
|
|
99
|
+
calldata.writeU256(amount);
|
|
100
|
+
|
|
101
|
+
Blockchain.call(token, calldata);
|
|
102
|
+
}
|
|
103
|
+
|
|
58
104
|
public static safeTransfer(
|
|
59
105
|
token: Address,
|
|
60
106
|
to: Address,
|
|
@@ -68,7 +114,7 @@ export class TransferHelper {
|
|
|
68
114
|
U32_BYTE_LENGTH +
|
|
69
115
|
data.length,
|
|
70
116
|
);
|
|
71
|
-
calldata.writeSelector(this.
|
|
117
|
+
calldata.writeSelector(this.SAFE_TRANSFER_SELECTOR);
|
|
72
118
|
calldata.writeAddress(to);
|
|
73
119
|
calldata.writeU256(amount);
|
|
74
120
|
calldata.writeBytesWithLength(data);
|
|
@@ -104,7 +150,7 @@ export class TransferHelper {
|
|
|
104
150
|
U32_BYTE_LENGTH +
|
|
105
151
|
data.length,
|
|
106
152
|
);
|
|
107
|
-
calldata.writeSelector(this.
|
|
153
|
+
calldata.writeSelector(this.SAFE_TRANSFER_FROM_SELECTOR);
|
|
108
154
|
calldata.writeAddress(from);
|
|
109
155
|
calldata.writeAddress(to);
|
|
110
156
|
calldata.writeU256(amount);
|