Proposal extends Method
This commit is contained in:
@@ -22,9 +22,6 @@ type ExtrinsicValue = {
|
|||||||
signature?: ExtrinsicSignature
|
signature?: ExtrinsicSignature
|
||||||
};
|
};
|
||||||
|
|
||||||
// console.error('ExtrinsicSignature', ExtrinsicSignature);
|
|
||||||
// console.error('Method', Method);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representation of an Extrinsic in the system. It contains the actual call,
|
* Representation of an Extrinsic in the system. It contains the actual call,
|
||||||
* (optional) signature and encodes with an actual length prefix
|
* (optional) signature and encodes with an actual length prefix
|
||||||
|
|||||||
@@ -2,9 +2,56 @@
|
|||||||
// This software may be modified and distributed under the terms
|
// This software may be modified and distributed under the terms
|
||||||
// of the ISC license. See the LICENSE file for details.
|
// of the ISC license. See the LICENSE file for details.
|
||||||
|
|
||||||
import Extrinsic from './Extrinsic';
|
import hexToU8a from '@polkadot/util/hex/toU8a';
|
||||||
|
import u8aConcat from '@polkadot/util/u8a/concat';
|
||||||
|
import u8aToHex from '@polkadot/util/u8a/toHex';
|
||||||
|
|
||||||
// The Nonce or number of transactiosn sent by a specific account. Generally used
|
import Compact from './codec/Compact';
|
||||||
// with extrinsics to determine the order of execution.
|
import Method from './Method';
|
||||||
export default class Proposal extends Extrinsic {
|
|
||||||
|
// A proposal in the system. It contains the same data as an extrinsic, but the encoding
|
||||||
|
// does not allow for signatures or versions, only the callindex & parameters required
|
||||||
|
export default class Proposal extends Method {
|
||||||
|
get length (): number {
|
||||||
|
return this.toU8a(true).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
byteLength (): number {
|
||||||
|
const length = this.length;
|
||||||
|
|
||||||
|
return length + Compact.encode(length).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
fromJSON (input: any): Proposal {
|
||||||
|
super.fromU8a(hexToU8a(input));
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
fromU8a (input: Uint8Array): Proposal {
|
||||||
|
const [offset, length] = Compact.decode(input);
|
||||||
|
|
||||||
|
super.fromU8a(input.subarray(offset, offset + length.toNumber()));
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
toU8a (isBare?: boolean): Uint8Array {
|
||||||
|
const encoded = super.toU8a();
|
||||||
|
|
||||||
|
return isBare
|
||||||
|
? encoded
|
||||||
|
: u8aConcat(
|
||||||
|
Compact.encode(encoded.length),
|
||||||
|
encoded
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
toHex (): string {
|
||||||
|
return u8aToHex(this.toU8a());
|
||||||
|
}
|
||||||
|
|
||||||
|
toJSON (): any {
|
||||||
|
return this.toHex();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user