olifanton/interop . PHP-Port der tonweb-boc JS-Bibliothek
composer require olifanton/boc Installieren Sie olifanton/boc -Paket über den Komponisten und geben Sie das Autoload -Skript ein:
<?php declare (strict_types= 1 );
require __DIR__ . " /vendor/autoload.php " ;
use Olifanton Boc BitString ;
use Olifanton Boc Cell ;
// Now you can use BoC classesOlifantonBocBitString BitString ist eine Klasse, mit der Sie binäre Daten manipulieren können. BitString ist das Herzstück der PHP -Darstellung von TVM -Zellen. BitString ist Speicher für die Speicherung von Binärdaten optimiert. Innen verwendet Bitstring die Implementierung von Uint8Array , die vom ajf/typed-arrays -Paket bereitgestellt wird, und wird als Basistyp zum Übertragen von Binärdaten zwischen Teilen der Olifanton-Bibliotheken verwendet.
Die Bitstring -Instanz wird mit einer streng festen Länge erstellt. write% (WriteBit, WriteUint, ...) Methoden verschieben Sie den internen Cursor. Wenn Sie versuchen, einen Wert zu schreiben, der die Länge der freien Bits überschreitet, wird die Ausnahme BitStringException ausgelöst.
/**
* @param int $length
*/
public function __construct( int $ length )Parameter:
$length - Länge von Uint8Array. Standardwert für TVM -Zellen: 1023 (Dokumentation) Gibt die nicht verwendete Bit -Länge der Bitstring zurück.
Rücksendungen gebrauchte Bits Länge der Bitstring.
Rendite gebrauchte Byteslänge der Bitstring.
/**
* @param int $n Position
*/
public function get( int $ n ): bool Gibt einen Bit -Wert bei $n Position zurück.
/**
* @param int $n Position
*/
public function on( int $ n ): void Legt einen Bitwert auf 1 an Position $n fest.
/**
* @param int $n Position
*/
public function off( int $ n ): void Legt einen Bitwert auf 0 an Position $n fest.
/**
* @param int $n Position
*/
public function toggle( int $ n ): void Umschalten (inverser) Bitwert an Position $n .
Gibt den Generator gebrauchter Bits zurück.
Beispiel:
<?php declare (strict_types= 1 );
use Olifanton Boc BitString ;
$ bs = new BitString ( 4 );
$ bs -> writeBit ( 1 );
$ bs -> writeBit ( 0 );
$ bs -> writeBit ( 1 );
$ bs -> writeBit ( 1 );
foreach ( $ bs -> iterate () as $ b ) {
echo ( int ) $ b ;
}
// Prints "1011" /**
* @param int|bool $b
*/
public function writeBit( int | bool $ b ): voidSchreibt Bit und erhöht den internen Cursor von Bitstring.
/**
* @param array<int | bool> $ba Array of bits
*/
public function writeBitArray( array $ ba ): voidSchreibt eine Reihe von Bits.
Beispiel:
<?php declare (strict_types= 1 );
use Olifanton Boc BitString ;
$ bs = new BitString ( 4 );
$ bs -> writeBitArray ([ 1 , false , 0 , true ]);
foreach ( $ bs -> iterate () as $ b ) {
echo ( int ) $ b ;
}
// Prints "1001" /**
* @param int|BrickMathBigInteger $number Unsigned integer
* @param int $bitLength Integer size (8, 16, 32, ...)
*/
public function writeUint( int | BigInteger $ number , int $ bitLength ): voidSchreibt $ bitlength-bit unsigned Ganzzahl.
/**
* @param int|BrickMathBigInteger $number Signed integer
* @param int $bitLength Integer size (8, 16, 32, ...)
*/
public function writeInt( int | BigInteger $ number , int $ bitLength ): voidSchreibt $ bitLength-bit signierte Ganzzahl.
Alias der writeUint() -Methode mit vordefinierter Parameterwert von $ BitLength.
/**
* @param ajfTypedArraysUint8Array $ui8 Byte array
*/
public function writeBytes( Uint8Array $ ui8 ): voidSchreiben Sie eine Reihe von nicht signierten 8-Bit-Ganzzahlen.
/**
* @param string $value
*/
public function writeString( string $ value ): voidSchreibt UTF-8-String.
/**
* @param int|BrickMathBigInteger $amount
*/
public function writeCoins( int | BigInteger $ amount ): void ;Schreibt Münzen in Nanotoncoins. 1 Tonne === 1000000000 (10^9) Nanotoncoins.
/**
* @param OlifantonUtilsAddress|null $address TON Address
*/
public function writeAddress(? Address $ address ): voidSchreibt Tonadresse. Siehe Adresse der Adresse im Olifanton/Utils -Paket.
/**
* @param OlifantonBocBitString $anotherBitString BitString instance
*/
public function writeBitString( BitString $ anotherBitString ): voidSchreibt einen weiteren Bitstring zu diesem Bitstring.
Klone diesen Bitstring und gibt eine neue Bitstring -Instanz zurück.
Gibt die Hex -String -Darstellung von Bitstring zurück.
Gibt unveränderliche Kopie von internem Uint8Array zurück.
Gibt die Größe des Bitstring in Bits zurück.
OlifantonBocCell Cell ist eine Klasse, die das Konzept von TVM -Zellen in PHP implementiert. Um neue und empfangene Nachrichten aus der Blockchain zu erstellen, arbeiten Sie mit Instanzen der Zellklasse.
Ohne Parameter.
/**
* @param string|Uint8Array $serializedBoc Serialized BoC
* @return Cell[]
*/
public static function fromBoc( string | Uint8Array $ serializedBoc ): arrayErstellt eine Array von Zellen von Byte -Array oder Hex -Zeichenfolge.
/**
* @param string|Uint8Array $serializedBoc Serialized BoC
* @param bool $isBase64 Base64-serialized flag, default false
*/
public static function oneFromBoc( string | Uint8Array $ serializedBoc , bool $ isBase64 = false ): CellFeln Sie eine Wurzelzelle aus Byte -Array oder Hex -Zeichenfolge.
/**
* @param Cell $anotherCell Another cell
* @return Cell This Cell
*/
public function writeCell( Cell $ anotherCell ): selfSchreibt eine andere Zelle in diese Zelle und gibt diese Zelle zurück. Veränderliche Methode.
Gibt maximale Tiefe von Kinderzellen zurück.
Gibt die interne Bitstring -Instanz zum Schreiben und Lesen zurück.
Gibt Array-ähnliches Objekt von Kinderzellen zurück.
Gibt SHA-256 Hash dieser Zelle zurück.
Drucken Sie den Inhalt von Zell rekursiv wie Fünf.
/**
* @param bool $has_idx Default _true_
* @param bool $hash_crc32 Default _true_
* @param bool $has_cache_bits Default _false_
* @param int $flags Default _0_
*/
public function toBoc( bool $ has_idx = true ,
bool $ hash_crc32 = true ,
bool $ has_cache_bits = false ,
int $ flags = 0 ): Uint8ArrayErstellt ein BOC -Byte -Array.
OlifantonBocSlice Slice ist die Art von Zellscheiben. Eine Zelle kann in eine Scheibe umgewandelt werden, und dann können die Datenbits und Verweise auf andere Zellen aus der Zelle erhalten werden, indem sie aus der Scheibe geladen werden.
load% . Wenn Sie versuchen, einen Wert zu lesen, der die Länge der freien Bits überschreitet, wird die Ausnahme SliceException ausgelöst.
/**
* @param ajfTypedArraysUint8Array $array
* @param int $length
* @param OlifantonBocSlice[] $refs
*/
public function __construct( Uint8Array $ array , int $ length , array $ refs )Parameter:
$array - uint8Array aus der Bitstring -Darstellung von Zelle$length - Bitstring -Länge$refs - Kinderzellenschnitte Gibt die ungelesenen Bits gemäß dem internen Cursor zurück.
/**
* @param int $n
*/
public function get( int $ n ): bool Gibt einen Bitwert bei Position $n zurück.
Liest ein wenig und bewegt den Cursor.
/**
* @param int $bitLength
*/
public function loadBits( int $ bitLength ): Uint8ArrayLiest Bit Array.
/**
* @param int $bitLength
*/
public function loadUint( int $ bitLength ): BigIntegerLiest die unsignierte Ganzzahl.
/**
* @param int $bitLength
*/
public function loadInt( int $ bitLength ): BigIntegerLiest signierte Ganzzahl.
/**
* @param int $bitLength
*/
public function loadVarUint( int $ bitLength ): BigInteger Liest Tonmenge in Nanotoncoins.
Liest die Adresse.
Liest ein Stück Kinderzellen.
composer run testMIT