bcnet

Lista comandos

Por enrique ()


tipos vars, cons y prots


"headerStatic"

 Define constantes cuando lee la cabecera del bloque, ANTES de la ejecución

solo se puede usar una etiqueta una vez;

solo argumentos literales

formato: [indice_nombre],[valor]

#headerStatic:myconstant,154657;


"static"

Define constantes antes de hacer nada: 1º pasada, ANTES de la ejecución

solo se puede usar una etiqueta una vez;

solo argumentos literales

formato: [indice_nombre],[valor]

define: myconstant,154657;


"set" -----> revisar si es necesario

Define constantes o vars;

formato: [indice_nombre],[valor]

set: my@cons, num;

set: my@cons, num@const;

en modo protegido puede escribir en prot

#set: my@prot, num@const;


"setRef" -----> revisar si es necesario

rellena array de constantes, vars prots , referenciado por el valor de otra

formato: [var,prot,cons], [indice_nombre, literal], [space]

en modo protegido puede escribir en prot

#setRef: tmp2@var, addressIn@var, prot;

#setRef: tmp2@var, addressIn@var, prot;


"define"

 Define constantes en tiempo de ejecución

solo se puede usar una etiqueta una vez;

formato: [indice_nombre],[valor]

#define: myconstant,154657;

#define: myconstant, my@var;

"var"

rellena un array con una var, declarada literal ejem: mivar o referenciada a otra var cons o prot ejemplo: minombre@var

formato: [indice_nombre (txt)],[valor]

#var: myar, m154657;

puede definir un indice_nombre con el valor de otra variable

#var: una_var_definida@var, unvalordeunavardefinida@var;

ejemplo:

#define: myconst, nombre;

#var: myconst@cons, 1234; -> nombre = 1234;


"unset"

borra una var

#unSet:myar;

también:

#unSet: una_var_definida@var, unvalordeunavardefinida@var;


"prot"

rellena un array con un prot, declarado literal ejem: miprot o referenciada a otra var cons o prot ejemplo: minombre@var

#prot: myprotvar, m154657;

#prot: una_var_definida@var, unvalordeunavardefinida@var;

#define: myconst, nombre;

#prot: myconst@cons, 1234; -> nombre = 1234;


"required"

comprueba si una var, cons o prot esta definido

detiene la ejecución en caso de falso

#required:myconstant@space;


"check" -----> revisar si es necesario (duplicado de required??)

comprueba si una var cons o prot (solo posible en modo protegido) existe en mac

#check: result2@cons,algo@var;

"checkDatInSpace" -----> revisar si es necesario (podria ser dentro de required o si fuera necesario cambair nombre a requiredHs)

comprueba si un indice esta definido en un space

#check: bool@var, myconstant@space, space;

#check: result@var, miadd@var, prot;


"setSpace"

crea espacio para (constantes, vars y functions?¿) prot

formato: [indice_nombre][valor]

"setProtSpa"

rellena un hspace con prots.

#setProtSpa: premio@cons, coinName@cons, address@var;

#setProtSpa: value, index, space;


"mainHome"

set el prot especial con el blockId donde se busca el main

este prot es un caso especial porque execbcnet lo busca en ultimo bloque de la cadena (antes de buscar el main)

ejem:

#mainHome: 1; // set como mainhome al block id 1

Estructuras

"Fn"

 crea una función, las variables están aisladas, se puede pasar argumentos y devolver un resultado

  se llaman con

#nombreMiFn:;

"sub"

engloba código bajo la etiqueta para ser llamado con callSub

puede haber funciones anidadas, pero si se vuelve a llamar a la función padre se redefinen y produce error

#function: myfuncion;


"rtnSub"

retorna de la función a la siguiente instrucción del programa

#callfunction: myfuncion;

"callSub"

Llama a un sub

#callfunction: myfuncion;


"if"

ejecuta un bloque de codigo si cumple una condicion logica

puede estar anidado

op: equal, not, may, min, minEqual, mayEqual

#if:myvar@var,equal,mycons@const;


"endIf"

cierra el if

#endIf:;

"getBlockDiv"

trae una parte de un bloque (RAW) delimitado entre div .... endDiv

#div: var...cons, var....cons....literal ;


"main"

aquí reside el programa de la red, que se carga para parsear cada bloque nuevo

solo se puede definir una vez, y presentar un solo main alternativo


"endMain"

cierra el bloque especial main


"div"

divide una sección del bloque, útil para hashear

#div: mypart;


"endDiv"

delimita el final de una parte del bloque

#endDiv:;

Math y crypto

"addVar"

suma un numero o una var cons o prot (si se puede) referenciado (@cons...) y una var (literal)

addVar: myvar,154657;

addVar: myvar, mydato@var;

"sigVerif"

verifica la firma de un hash con la clave publica

sigVerf: result@var, dataToSig@var, signature@var, pubkey;

"mkSha256" ?????

hace el hash de una var, cons, prot (si esta disponible)

mkSha256: variableResul,varibleIn;

"mkHash"

hash con sha256, ripemd160, crc32b, md5, tiger160

#mkHash: Result, data, alg;

"mathVar"

opera numero y una var cons o prot (si se puede) referenciado (@cons...@var) y una var (literal)

mathVar:myvar, add,154657;

mathVar:myvar, add, dato@cons;

"add"

suma var, const y nums

add:result,varmyvar,constmyconst;

add:resultado@con, mydat1@var, dat2@cons;

"math"

suma var, const y nums

math:result,var1,op,var2;

op: add, sub, mul, div

math:resultado@var, var1@prot , add, var2@cons;


Db y sistema

"getSystemTime"

obtiene la hora actual (float) del sistema

getSystemTime: myhora@cons;

"getBlockRaw"

obtiene los datos del bloque crudo

getBlockRaw: mybloque@var;

"getFromBc"

[result] [block_id] [var@space]

Trae un dato desde la db...

el tercer par. es la variable y el espacio en el bloque

#GetDatBc: tmp@var, txInBlockId, nodeAdd@var;

#GetDatBc: tmp@var, txInBlockId, ->nodeAdd@[var];

"getProtFromSpaBc" ---> revisar

atención: si el espacio o el prot no esta definido devuelve 0

 el tercer argumento toma el valor que tiene la variable local, es necesario

 especificar el espacio donde encontrar el dato (space)

#getFromBcSpace: result, name, space;

#getFromBcSpace: tmp@var, index@var, add@var;