Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 1x 1x 1x 1x 1x 1x 1x 483366x 483366x 483366x 525459x 525459x 525459x 483366x 483366x 1x 2622232x 2622232x 497323x 497323x 2418406x 497323x 497323x 497323x 116589x 116589x 116589x 380733x 380733x 380733x 380733x 380733x 380733x 380733x 2124909x 2124909x 2124909x 2622232x 136587x 136587x 2622232x 1885688x 1885688x 1885688x 102633x 102633x 102633x 102633x 102633x 102633x 1x 1x 1x 1x 1x 1x 1x 203826x 203826x 36504932x 36504932x 36504932x 203825x 203825x | //See: https://github.com/ethereum/wiki/wiki/RLP
import { getBytes } from "./data.js";
import type { RlpStructuredDataish } from "./rlp.js";
function arrayifyInteger(value: number): Array<number> {
const result: Array<number> = [];
while (value) {
result.unshift(value & 0xff);
value >>= 8;
}
return result;
}
function _encode(object: Array<any> | string | Uint8Array): Array<number> {
if (Array.isArray(object)) {
let payload: Array<number> = [];
object.forEach(function(child) {
payload = payload.concat(_encode(child));
});
if (payload.length <= 55) {
payload.unshift(0xc0 + payload.length)
return payload;
}
const length = arrayifyInteger(payload.length);
length.unshift(0xf7 + length.length);
return length.concat(payload);
}
const data: Array<number> = Array.prototype.slice.call(getBytes(object, "object"));
if (data.length === 1 && data[0] <= 0x7f) {
return data;
} else if (data.length <= 55) {
data.unshift(0x80 + data.length);
return data;
}
const length = arrayifyInteger(data.length);
length.unshift(0xb7 + length.length);
return length.concat(data);
}
const nibbles = "0123456789abcdef";
/**
* Encodes %%object%% as an RLP-encoded [[DataHexString]].
*/
export function encodeRlp(object: RlpStructuredDataish): string {
let result = "0x";
for (const v of _encode(object)) {
result += nibbles[v >> 4];
result += nibbles[v & 0xf];
}
return result;
}
|