crosslightning-evm
Advanced tools
Comparing version 3.0.7 to 3.0.8
@@ -16,2 +16,3 @@ /// <reference types="node" /> | ||
constructor(provider: Signer, bitcoinRpc: BitcoinRpc<B>, btcRelayContractAddress: string); | ||
saveInitialHeader(header: B, epochStart: number, pastBlocksTimestamps: number[]): Promise<UnsignedTransaction>; | ||
retrieveLogAndBlockheight(blockData: { | ||
@@ -18,0 +19,0 @@ blockhash: string; |
@@ -31,2 +31,13 @@ "use strict"; | ||
} | ||
saveInitialHeader(header, epochStart, pastBlocksTimestamps) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
if (pastBlocksTimestamps.length !== 10) { | ||
throw new Error("Invalid prevBlocksTimestamps"); | ||
} | ||
const serializedBlock = EVMBtcRelay.serializeBlockHeader(header); | ||
const unsignedTx = yield this.contract.populateTransaction.setInitialParent(serializedBlock.serializeToStruct(), ethers_1.BigNumber.from(header.getHeight()), "0x" + header.getChainWork().toString('hex'), ethers_1.BigNumber.from(epochStart), pastBlocksTimestamps.map(e => ethers_1.BigNumber.from(e))); | ||
unsignedTx.gasLimit = ethers_1.BigNumber.from(150000); | ||
return unsignedTx; | ||
}); | ||
} | ||
retrieveLogAndBlockheight(blockData, requiredBlockheight) { | ||
@@ -33,0 +44,0 @@ return __awaiter(this, void 0, void 0, function* () { |
/// <reference types="node" /> | ||
import { BtcHeader } from "crosslightning-base"; | ||
import { BigNumber } from "ethers"; | ||
type EVMBtcHeaderType = { | ||
@@ -12,2 +13,10 @@ version: number; | ||
}; | ||
type EVMBtcHeaderStruct = { | ||
version: BigNumber; | ||
reversedPrevBlockHash: string; | ||
merkleRoot: string; | ||
timestamp: BigNumber; | ||
nbits: BigNumber; | ||
nonce: BigNumber; | ||
}; | ||
export declare class EVMBtcHeader implements BtcHeader { | ||
@@ -22,2 +31,3 @@ version: number; | ||
constructor(obj: EVMBtcHeaderType); | ||
serializeToStruct(): EVMBtcHeaderStruct; | ||
serialize(): Buffer; | ||
@@ -24,0 +34,0 @@ getMerkleRoot(): Buffer; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.EVMBtcHeader = void 0; | ||
const ethers_1 = require("ethers"); | ||
const EVMBtcStoredHeader_1 = require("./EVMBtcStoredHeader"); | ||
class EVMBtcHeader { | ||
@@ -14,2 +16,12 @@ constructor(obj) { | ||
} | ||
serializeToStruct() { | ||
return { | ||
version: (0, EVMBtcStoredHeader_1.reverseBigNumber)(ethers_1.BigNumber.from(this.version)), | ||
reversedPrevBlockHash: "0x" + this.reversedPrevBlockhash.toString("hex"), | ||
merkleRoot: "0x" + this.merkleRoot.toString("hex"), | ||
timestamp: (0, EVMBtcStoredHeader_1.reverseBigNumber)(ethers_1.BigNumber.from(this.timestamp)), | ||
nbits: (0, EVMBtcStoredHeader_1.reverseBigNumber)(ethers_1.BigNumber.from(this.nbits)), | ||
nonce: (0, EVMBtcStoredHeader_1.reverseBigNumber)(ethers_1.BigNumber.from(this.nonce)) | ||
}; | ||
} | ||
serialize() { | ||
@@ -16,0 +28,0 @@ const versionBuffer = Buffer.alloc(4); |
@@ -12,2 +12,3 @@ /// <reference types="node" /> | ||
}; | ||
export declare function reverseBigNumber(num: BigNumber): BigNumber; | ||
export declare class EVMBtcStoredHeader implements BtcStoredHeader<EVMBtcHeader> { | ||
@@ -14,0 +15,0 @@ chainWork: BigNumber; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.EVMBtcStoredHeader = void 0; | ||
exports.EVMBtcStoredHeader = exports.reverseBigNumber = void 0; | ||
const EVMBtcHeader_1 = require("./EVMBtcHeader"); | ||
@@ -12,2 +12,3 @@ const ethers_1 = require("ethers"); | ||
} | ||
exports.reverseBigNumber = reverseBigNumber; | ||
class EVMBtcStoredHeader { | ||
@@ -14,0 +15,0 @@ constructor(obj) { |
{ | ||
"name": "crosslightning-evm", | ||
"version": "3.0.7", | ||
"version": "3.0.8", | ||
"description": "EVM specific base implementation", | ||
@@ -27,3 +27,3 @@ "main": "./dist/index.js", | ||
"bn.js": "^5.2.1", | ||
"crosslightning-base": "^3.0.6", | ||
"crosslightning-base": "^3.0.8", | ||
"ethers": "^5.7.2", | ||
@@ -30,0 +30,0 @@ "typescript": "^4.9.5" |
@@ -32,2 +32,21 @@ import {BitcoinRpc, BtcBlock, BtcRelay, StatePredictorUtils} from "crosslightning-base"; | ||
async saveInitialHeader(header: B, epochStart: number, pastBlocksTimestamps: number[]): Promise<UnsignedTransaction> { | ||
if(pastBlocksTimestamps.length!==10) { | ||
throw new Error("Invalid prevBlocksTimestamps"); | ||
} | ||
const serializedBlock = EVMBtcRelay.serializeBlockHeader(header); | ||
const unsignedTx = await this.contract.populateTransaction.setInitialParent( | ||
serializedBlock.serializeToStruct(), | ||
BigNumber.from(header.getHeight()), | ||
"0x"+header.getChainWork().toString('hex'), | ||
BigNumber.from(epochStart), | ||
pastBlocksTimestamps.map(e => BigNumber.from(e)) | ||
); | ||
unsignedTx.gasLimit = BigNumber.from(150000); | ||
return unsignedTx; | ||
} | ||
async retrieveLogAndBlockheight(blockData: {blockhash: string, height: number}, requiredBlockheight?: number): Promise<{ | ||
@@ -34,0 +53,0 @@ header: EVMBtcStoredHeader, |
import {BtcHeader} from "crosslightning-base" | ||
import {BigNumber} from "ethers"; | ||
import {reverseBigNumber} from "./EVMBtcStoredHeader"; | ||
@@ -13,2 +15,11 @@ type EVMBtcHeaderType = { | ||
type EVMBtcHeaderStruct = { | ||
version: BigNumber, | ||
reversedPrevBlockHash: string, | ||
merkleRoot: string, | ||
timestamp: BigNumber, | ||
nbits: BigNumber, | ||
nonce: BigNumber | ||
} | ||
export class EVMBtcHeader implements BtcHeader { | ||
@@ -34,2 +45,13 @@ | ||
serializeToStruct(): EVMBtcHeaderStruct { | ||
return { | ||
version: reverseBigNumber(BigNumber.from(this.version)), | ||
reversedPrevBlockHash: "0x"+this.reversedPrevBlockhash.toString("hex"), | ||
merkleRoot: "0x"+this.merkleRoot.toString("hex"), | ||
timestamp: reverseBigNumber(BigNumber.from(this.timestamp)), | ||
nbits: reverseBigNumber(BigNumber.from(this.nbits)), | ||
nonce: reverseBigNumber(BigNumber.from(this.nonce)) | ||
} | ||
} | ||
serialize(): Buffer { | ||
@@ -36,0 +58,0 @@ const versionBuffer = Buffer.alloc(4); |
@@ -14,3 +14,3 @@ import {EVMBtcHeader} from "./EVMBtcHeader"; | ||
function reverseBigNumber(num: BigNumber): BigNumber { | ||
export function reverseBigNumber(num: BigNumber): BigNumber { | ||
const buffer = Buffer.alloc(4); | ||
@@ -17,0 +17,0 @@ buffer.writeUint32LE(num.toNumber()); |
337627
8040
Updatedcrosslightning-base@^3.0.8