godprotocol 1.0.78 → 1.0.81
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/Index.js +9 -13
- package/Loader_sequence/main.js +55 -7
- package/Objects/Account.js +34 -9
- package/Objects/Block.js +4 -1
- package/Objects/Filesystem.js +1 -1
- package/Objects/Manager.js +23 -33
- package/Objects/Opcodes.js +86 -17
- package/Objects/Oracle.js +44 -5
- package/Objects/Virtual_machine.js +8 -0
- package/framer.js +36 -34
- package/opcodes/add.js +0 -15
- package/opcodes/indices.js +31 -0
- package/opcodes/jmp.js +13 -13
- package/opcodes/std.js +5 -1
- package/opcodes.js +20 -2
- package/package.json +3 -5
- package/readme.md +4 -4
- package/tsconfig.json +8 -0
- package/types/Account.d.ts +73 -0
- package/types/Block.d.ts +22 -0
- package/types/Blockweb.d.ts +14 -0
- package/types/Chain.d.ts +35 -0
- package/types/Explorer.d.ts +9 -0
- package/types/Filesystem.d.ts +23 -0
- package/types/Frame.d.ts +14 -0
- package/types/Manager.d.ts +21 -0
- package/types/Opcodes.d.ts +11 -0
- package/types/Oracle.d.ts +17 -0
- package/types/Virtual_machine.d.ts +20 -0
- package/types/index.d.ts +4 -0
- package/utils/create_server.js +90 -57
- package/utils/services.js +1 -1
- package/.babelrc +0 -3
package/opcodes/add.js
CHANGED
|
@@ -22,20 +22,5 @@ var ops = [{
|
|
|
22
22
|
}, {
|
|
23
23
|
name: "equal",
|
|
24
24
|
sign: "=="
|
|
25
|
-
}, {
|
|
26
|
-
name: "not_equal",
|
|
27
|
-
sign: "!="
|
|
28
|
-
}, {
|
|
29
|
-
name: "greater_than",
|
|
30
|
-
sign: ">"
|
|
31
|
-
}, {
|
|
32
|
-
name: "less_than",
|
|
33
|
-
sign: "<"
|
|
34
|
-
}, {
|
|
35
|
-
name: "gte",
|
|
36
|
-
sign: ">="
|
|
37
|
-
}, {
|
|
38
|
-
name: "lte",
|
|
39
|
-
sign: "<="
|
|
40
25
|
}];
|
|
41
26
|
exports.ops = ops;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.setter = exports.getter = void 0;
|
|
7
|
+
var getter = function getter(args) {
|
|
8
|
+
var base = args.op0;
|
|
9
|
+
if (typeof base === "number") return base;
|
|
10
|
+
if (typeof base === "string") return base[args.op1];
|
|
11
|
+
if (Array.isArray(base)) return base.slice(args.op1)[0];
|
|
12
|
+
return base[args.op1];
|
|
13
|
+
};
|
|
14
|
+
exports.getter = getter;
|
|
15
|
+
var setter = function setter(args) {
|
|
16
|
+
var base = args.op0;
|
|
17
|
+
if (typeof base === "number") return base;
|
|
18
|
+
if (typeof base === "string") {
|
|
19
|
+
base = ""
|
|
20
|
+
.concat(base.slice(0, args.op2))
|
|
21
|
+
.concat(args.op1)
|
|
22
|
+
.concat(base.slice(args.op2 + 1));
|
|
23
|
+
} else {
|
|
24
|
+
if (Array.isArray(base)) {
|
|
25
|
+
if (args.op2 == null || args.op2 >= base.length) base.push(args.op1);
|
|
26
|
+
else base[args.op2] = args.op1;
|
|
27
|
+
} else base[args.op2] = args.op1;
|
|
28
|
+
}
|
|
29
|
+
return base;
|
|
30
|
+
};
|
|
31
|
+
exports.setter = setter;
|
package/opcodes/jmp.js
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var jmp = function jmp(args, vm) {
|
|
8
|
-
|
|
6
|
+
exports.jmp = void 0;
|
|
7
|
+
var jmp = function jmp(args, vm, meta) {
|
|
8
|
+
meta = meta || {};
|
|
9
|
+
var _meta = meta,
|
|
10
|
+
flag = _meta.flag,
|
|
11
|
+
inverse = _meta.inverse;
|
|
12
|
+
var condition;
|
|
13
|
+
if (flag) condition = vm.flags[flag];
|
|
14
|
+
if (inverse) condition = !!!condition;
|
|
15
|
+
if ((condition || !flag) && typeof args.op0 === "number") {
|
|
16
|
+
vm.track.pointer = args.op0;
|
|
17
|
+
}
|
|
9
18
|
};
|
|
10
|
-
exports.jmp = jmp;
|
|
11
|
-
var jmp_if = function jmp_if(args, vm) {
|
|
12
|
-
if (args.passed) vm.account.manager.tracker[vm.mgr_index].pointer += args.index;
|
|
13
|
-
};
|
|
14
|
-
exports.jmp_if = jmp_if;
|
|
15
|
-
var hold = function hold(args, vm) {
|
|
16
|
-
var track = vm.account.manager.tracker[vm.mgr_index];
|
|
17
|
-
track.hold = args.hold;
|
|
18
|
-
};
|
|
19
|
-
exports.hold = hold;
|
|
19
|
+
exports.jmp = jmp;
|
package/opcodes/std.js
CHANGED
|
@@ -4,8 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.stdout = void 0;
|
|
7
|
-
var stdout = function stdout(args) {
|
|
7
|
+
var stdout = function stdout(args, vm) {
|
|
8
8
|
if (!args) return;
|
|
9
|
+
vm.account.stdout.push({
|
|
10
|
+
data: args,
|
|
11
|
+
pid: vm.track.pid
|
|
12
|
+
});
|
|
9
13
|
for (var v in args) console.log(args[v]);
|
|
10
14
|
};
|
|
11
15
|
exports.stdout = stdout;
|
package/opcodes.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _add = require("./opcodes/add");
|
|
8
|
+
var _indices = require("./opcodes/indices");
|
|
8
9
|
var _jmp = require("./opcodes/jmp");
|
|
9
10
|
var _std = require("./opcodes/std");
|
|
10
11
|
var _services = require("./utils/services");
|
|
@@ -17,15 +18,32 @@ var opcodes = function opcodes(account) {
|
|
|
17
18
|
if (!args) return;
|
|
18
19
|
try {
|
|
19
20
|
var result = eval("".concat(args.op0, " ").concat(op.sign, " ").concat(args.op1));
|
|
21
|
+
if (op.sign === "==") {
|
|
22
|
+
account.vm.flags.equal = !!result;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
20
25
|
return result;
|
|
21
26
|
} catch (e) {
|
|
22
27
|
console.log(e.message);
|
|
23
28
|
}
|
|
24
29
|
});
|
|
25
30
|
});
|
|
26
|
-
|
|
31
|
+
Object.keys(account.vm.flags).map(function (flag) {
|
|
32
|
+
set("jmp_".concat(flag), function (args, vm) {
|
|
33
|
+
return (0, _jmp.jmp)(args, vm, {
|
|
34
|
+
flag: flag
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
set("jmp_not_".concat(flag), function (args, vm) {
|
|
38
|
+
return (0, _jmp.jmp)(args, vm, {
|
|
39
|
+
flag: flag,
|
|
40
|
+
inverse: true
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
27
44
|
set("jmp", _jmp.jmp);
|
|
28
|
-
set("
|
|
45
|
+
set("setter", _indices.setter);
|
|
46
|
+
set("getter", _indices.getter);
|
|
29
47
|
set("send", function (data) {
|
|
30
48
|
return (0, _services.post_request)(data, account.vm.stdin);
|
|
31
49
|
});
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "godprotocol",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.81",
|
|
4
4
|
"description": "A data mediator.",
|
|
5
5
|
"main": "Index.js",
|
|
6
|
-
"types": "index.d.ts",
|
|
6
|
+
"types": "types/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
9
9
|
"start": "nodemon -r esm Index.js",
|
|
@@ -43,12 +43,10 @@
|
|
|
43
43
|
"godprotocol"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@babel/cli": "latest",
|
|
47
|
-
"@babel/core": "^7.19.1",
|
|
48
46
|
"crypto": "^1.0.1",
|
|
49
47
|
"elliptic": "^6.5.5",
|
|
50
48
|
"fs": "^0.0.1-security",
|
|
51
|
-
"
|
|
49
|
+
"generalised-datastore": "^1.7.85"
|
|
52
50
|
},
|
|
53
51
|
"publishConfig": {
|
|
54
52
|
"ignore": [
|
package/readme.md
CHANGED
|
@@ -20,10 +20,10 @@ You can get overall comprehension in just 4 method calls.
|
|
|
20
20
|
Accounts comes with their own VM, thereby providing concurrency on processes being executed.
|
|
21
21
|
|
|
22
22
|
```js
|
|
23
|
-
import
|
|
23
|
+
import manager from "godprotocol";
|
|
24
24
|
|
|
25
25
|
// Create an initial account
|
|
26
|
-
let initiator =
|
|
26
|
+
let initiator = manager.add_account(`name`, { private: true || false });
|
|
27
27
|
// if private is set to `true`, communication to the account instance must be validated by sigining with the private key.
|
|
28
28
|
// N.B your keypairs are generated offline.
|
|
29
29
|
```
|
|
@@ -70,7 +70,7 @@ The run is technically the second in the pipeline.
|
|
|
70
70
|
initiator.run(
|
|
71
71
|
{
|
|
72
72
|
physical_address: "Account/initiator/Datatypes/Number", // This points to a chain
|
|
73
|
-
query:
|
|
73
|
+
query: "blocks:0", // Basically saying, index 0 block in physical_address chain, run again its instructions.
|
|
74
74
|
account: `public_key`,
|
|
75
75
|
},
|
|
76
76
|
cb
|
|
@@ -99,7 +99,7 @@ It is used to retrieve blocks and chains, and also extract their properties.
|
|
|
99
99
|
initiator.parse(
|
|
100
100
|
{
|
|
101
101
|
physical_address: "Account/initiator/Datatypes/Number", // This points to a chain
|
|
102
|
-
query:
|
|
102
|
+
query: "blocks:0", // Basically saying, index 0 block in physical_address chain, retrieve it.
|
|
103
103
|
account: `public_key`,
|
|
104
104
|
},
|
|
105
105
|
cb
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import Loader_sequence from "../Loader_sequence/main";
|
|
2
|
+
import Filesystem from "./Filesystem";
|
|
3
|
+
import Virtual_machine from "./Virtual_machine";
|
|
4
|
+
|
|
5
|
+
interface Meta {
|
|
6
|
+
private?: boolean;
|
|
7
|
+
manager?: any;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Program {
|
|
11
|
+
instructions: string[];
|
|
12
|
+
account: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface LoadPayload {
|
|
16
|
+
program: Program;
|
|
17
|
+
signature: string;
|
|
18
|
+
callback?: (data: any) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface ParsePayload {
|
|
22
|
+
payload: any;
|
|
23
|
+
signature: string;
|
|
24
|
+
callback?: (data: any) => void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface RunRequest {
|
|
28
|
+
payload: any;
|
|
29
|
+
signature: string;
|
|
30
|
+
callback?: (data: any) => void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface AccountPayload {
|
|
34
|
+
name: string;
|
|
35
|
+
meta?: Meta;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface EndpointPayload {
|
|
39
|
+
[key: string]: any;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
declare class Account extends Filesystem {
|
|
43
|
+
name: string;
|
|
44
|
+
private: boolean;
|
|
45
|
+
manager: any;
|
|
46
|
+
account: Account;
|
|
47
|
+
physical_address: string;
|
|
48
|
+
compiler: Loader_sequence;
|
|
49
|
+
chain: any;
|
|
50
|
+
vm: Virtual_machine;
|
|
51
|
+
mine_buffer: Record<string, any>;
|
|
52
|
+
|
|
53
|
+
constructor(name: string, meta?: Meta);
|
|
54
|
+
|
|
55
|
+
get_account(name: string): Account;
|
|
56
|
+
manage_buffer(callback?: (data: any) => void): string;
|
|
57
|
+
buff(block: any, pid: string): void;
|
|
58
|
+
flush_buffer(pid: string): void;
|
|
59
|
+
load(payload: LoadPayload): void;
|
|
60
|
+
parse(payload: ParsePayload): void;
|
|
61
|
+
run(request: RunRequest): void;
|
|
62
|
+
run_callback(callback: any, payload: any): void;
|
|
63
|
+
validate(
|
|
64
|
+
payload: any,
|
|
65
|
+
signature: string,
|
|
66
|
+
callback?: (data: any) => void
|
|
67
|
+
): boolean;
|
|
68
|
+
stringify(str?: boolean): string | object;
|
|
69
|
+
create_account(payload: AccountPayload): Account;
|
|
70
|
+
endpoint(endpoint: string, payload: EndpointPayload): void;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export default Account;
|
package/types/Block.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import Chain from "./Chain"; // Adjust the import according to your project structure
|
|
2
|
+
|
|
3
|
+
declare class Block {
|
|
4
|
+
chain: Chain;
|
|
5
|
+
data: any;
|
|
6
|
+
metadata: Record<string, any>;
|
|
7
|
+
children: Block[];
|
|
8
|
+
index: number;
|
|
9
|
+
previous_hash?: string;
|
|
10
|
+
hash?: string;
|
|
11
|
+
cursor?: any;
|
|
12
|
+
datapath?: string;
|
|
13
|
+
timelapse?: any;
|
|
14
|
+
|
|
15
|
+
constructor(chain: Chain);
|
|
16
|
+
|
|
17
|
+
generate_hash(): void;
|
|
18
|
+
store(no_curs?: boolean): void;
|
|
19
|
+
stringify(str?: boolean): string | object;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default Block;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Chain from "./Chain";
|
|
2
|
+
|
|
3
|
+
declare class Blockweb {
|
|
4
|
+
mgr: any;
|
|
5
|
+
physical_addresses: Record<string, string>;
|
|
6
|
+
chains: Record<string, Chain>;
|
|
7
|
+
|
|
8
|
+
constructor(mgr: any);
|
|
9
|
+
|
|
10
|
+
get(addr: string): Chain | undefined;
|
|
11
|
+
set(parent: any, name: string): Chain;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default Blockweb;
|
package/types/Chain.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import Block from "./Block";
|
|
2
|
+
import Explorer from "./Explorer";
|
|
3
|
+
|
|
4
|
+
declare class Chain extends Explorer {
|
|
5
|
+
parent: any;
|
|
6
|
+
account: any;
|
|
7
|
+
name: string;
|
|
8
|
+
physical_address: string;
|
|
9
|
+
pending_children: Block[];
|
|
10
|
+
connections: Block[];
|
|
11
|
+
blocks: Block[];
|
|
12
|
+
txs: any[];
|
|
13
|
+
height: number;
|
|
14
|
+
cursor: number;
|
|
15
|
+
cursors: number[];
|
|
16
|
+
buffs: any[];
|
|
17
|
+
start_time?: number;
|
|
18
|
+
hash: string;
|
|
19
|
+
|
|
20
|
+
constructor(parent: any, name?: string);
|
|
21
|
+
|
|
22
|
+
append_buffer(): void;
|
|
23
|
+
set_cursor(cursor: number): void;
|
|
24
|
+
get_buffer(): any;
|
|
25
|
+
generate_hash(): void;
|
|
26
|
+
get_block(index: number): Block | undefined;
|
|
27
|
+
add_tx(instruction: any): void;
|
|
28
|
+
mine(vm: any, no_curs?: boolean): Block;
|
|
29
|
+
add_block(block: Block): void;
|
|
30
|
+
get_latest_block(): Block | undefined;
|
|
31
|
+
stringify(str?: boolean): string | Record<string, any>;
|
|
32
|
+
add_chain(name: string): Chain;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default Chain;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare class Filesystem {
|
|
2
|
+
base_address: string;
|
|
3
|
+
physical_address: string;
|
|
4
|
+
name: string;
|
|
5
|
+
hash: string;
|
|
6
|
+
account: any;
|
|
7
|
+
manager: any;
|
|
8
|
+
|
|
9
|
+
constructor();
|
|
10
|
+
|
|
11
|
+
parse_path(path: string): any;
|
|
12
|
+
read(datapath: string): any;
|
|
13
|
+
save(content: any, chain: any, just_obj?: boolean): string | object;
|
|
14
|
+
data_addr(type: string): string;
|
|
15
|
+
get_type(chain: any): string;
|
|
16
|
+
write(arg: any, context: any): void;
|
|
17
|
+
name_hash(): void;
|
|
18
|
+
set_paths(chain: any): void;
|
|
19
|
+
add_chain(name: string, parent: any): any;
|
|
20
|
+
account_chain(account: any): any;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default Filesystem;
|
package/types/Frame.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare class Frame {
|
|
2
|
+
parent: Frame | null;
|
|
3
|
+
object: any;
|
|
4
|
+
children: Frame[];
|
|
5
|
+
instructions: (string | Frame)[];
|
|
6
|
+
|
|
7
|
+
constructor(object: any, parent?: Frame | null);
|
|
8
|
+
|
|
9
|
+
frame(object: any): Frame;
|
|
10
|
+
to_instruction(): void;
|
|
11
|
+
flatten_instructions(): string[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default Frame;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Account from "./Account";
|
|
2
|
+
import Blockweb from "./Blockweb";
|
|
3
|
+
import Oracle from "./Oracle";
|
|
4
|
+
|
|
5
|
+
declare class Manager {
|
|
6
|
+
accounts: { [key: string]: Account };
|
|
7
|
+
running: number;
|
|
8
|
+
tracks: { [key: string]: any };
|
|
9
|
+
web: Blockweb;
|
|
10
|
+
oracle: Oracle;
|
|
11
|
+
clock: NodeJS.Timeout | null;
|
|
12
|
+
|
|
13
|
+
constructor();
|
|
14
|
+
|
|
15
|
+
start_clock(): void;
|
|
16
|
+
get_account(name: string): Account | undefined;
|
|
17
|
+
add_account(name: string, meta?: { private?: boolean }): Account;
|
|
18
|
+
push(program: { sequence: string[]; account: Account; pid: string }): void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default Manager;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare class Opcodes {
|
|
2
|
+
opcodes: { [key: string]: (args?: any) => any };
|
|
3
|
+
|
|
4
|
+
constructor();
|
|
5
|
+
|
|
6
|
+
set(opcode: string, circuit: (args?: any) => any): void;
|
|
7
|
+
prepare_operation(opcode: string, context: any): void;
|
|
8
|
+
stdin(object: any, cb?: () => void): void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default Opcodes;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// import fs from "fs";
|
|
2
|
+
|
|
3
|
+
declare class Oracle {
|
|
4
|
+
// fs: typeof fs;
|
|
5
|
+
mgr: any;
|
|
6
|
+
datapaths: { [key: string]: { type: string; obj: any } };
|
|
7
|
+
|
|
8
|
+
constructor(mgr: any);
|
|
9
|
+
|
|
10
|
+
set(path: string, data: { type: string; obj: any }): void;
|
|
11
|
+
|
|
12
|
+
get(path: string): { type: string; obj: any } | undefined;
|
|
13
|
+
|
|
14
|
+
write(addr: string, data: any, meta?: { encoding: string }): void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default Oracle;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Opcodes from "./Opcodes";
|
|
2
|
+
|
|
3
|
+
declare class Virtual_machine extends Opcodes {
|
|
4
|
+
account: any;
|
|
5
|
+
contexts: any[];
|
|
6
|
+
stack: any[];
|
|
7
|
+
track: any;
|
|
8
|
+
|
|
9
|
+
constructor(context: any);
|
|
10
|
+
|
|
11
|
+
get_context(index?: number): any;
|
|
12
|
+
|
|
13
|
+
parse_arg(arg: string, is_cursor: boolean): any;
|
|
14
|
+
|
|
15
|
+
split_instruction(instruction: string): { opcode: string; args: string };
|
|
16
|
+
|
|
17
|
+
execute(instruction: string, track: any): void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default Virtual_machine;
|
package/types/index.d.ts
ADDED