82 lines
2.3 KiB
Plaintext
82 lines
2.3 KiB
Plaintext
/* The below does not represent a functional lock/unlock script.
|
|
* It is intended to test KDE's Syntax Highlighting framework.
|
|
*/
|
|
|
|
// Pragma comment.
|
|
pragma cashscript ^0.9.2;
|
|
|
|
// Locking Script/Function.
|
|
contract TestContract(
|
|
address addressExampple,
|
|
int intExample,
|
|
bool boolExample,
|
|
string stringExample,
|
|
pubkey pubkeyExample,
|
|
sig sigExample,
|
|
datasig datasigExample
|
|
) {
|
|
// Unlocking Script/Function.
|
|
function testUnlock(
|
|
byte singleByte,
|
|
bytes bytesUnspecifiedLength,
|
|
bytes1 bytes1Length,
|
|
bytes99 bytes99Length
|
|
) {
|
|
// General.
|
|
require(singleByte == bytes1Length);
|
|
|
|
// Arithmetic.
|
|
int resultAbs = abs(intExample);
|
|
int resultMin = min(intExample, 100);
|
|
int resultMax = max(intExample, 100);
|
|
int resultWithin = within(intExample, 0, 100);
|
|
|
|
// Hashing.
|
|
bool resultHash160 = hash160(bytesUnspecifiedLength);
|
|
bool resultHash256 = hash256(bytesUnspecifiedLength);
|
|
bool resultRipeMd160 = ripemd160(bytesUnspecifiedLength);
|
|
bool resultSha1 = sha1(bytesUnspecifiedLength);
|
|
bool resultSha256 = sha256(bytesUnspecifiedLength);
|
|
|
|
// Signature checking.
|
|
bool resultChecksig = checkSig(sigExample, pubkeyExample);
|
|
bool resultCheckMultiSig = checkMultiSig([sigExample], [pubkeyExample]);
|
|
bool resultCheckDataSig = checkDataSig(datasigExample, bytesUnspecifiedLength, pubkeyExample);
|
|
|
|
// Locking Bytecode.
|
|
bytes p2pkh = new LockingBytecodeP2PKH(bytesUnspecifiedLength);
|
|
bytes p2sh20 = new LockingBytecodeP2SH20(bytesUnspecifiedLength);
|
|
bytes p2sh32 = new LockingBytecodeP2SH32(bytesUnspecifiedLength);
|
|
bytes nullData = new LockingBytecodeNullData(bytesUnspecifiedLength);
|
|
|
|
// Keywods.
|
|
bool exampleTrue = true;
|
|
bool exampleFalse = false;
|
|
|
|
// Control structures.
|
|
if (exampleTrue) {
|
|
require(singleByte == bytes1Length);
|
|
} else if (exampleFalse) {
|
|
require(singleByte == bytes1Length);
|
|
} else {
|
|
require(singleByte == bytes1Length);
|
|
}
|
|
|
|
// Units.
|
|
int exampleSatoshis = 1 satoshis;
|
|
int exampleSats = 1 sats;
|
|
int exampleFinney = 1 finney;
|
|
int exampleBits = 1 bits;
|
|
int exampleBitcoin = 1 bitcoin;
|
|
int exampleSeconds = 1 seconds;
|
|
int exampleMinutes = 1 minutes;
|
|
int exampleHours = 1 hours;
|
|
int exampleDays = 1 days;
|
|
int exampleWeeks = 1 weeks;
|
|
|
|
// Misc.
|
|
string exampleString = "This is an example string";
|
|
bytes exampleHex = 0xaabbccddeeff;
|
|
}
|
|
}
|