# Utility

# getTransactionId

  • function getTransactionId(): Checksum256
    

    This function returns the id of the currently executing transaction. The id of the transaction is a sha256 checksum of the transaction data.

    Throws if:

    • transaction read fails for some reason

    The function should be used inside the action method of the contract.

    Example:

    import { getTransactionId } from 'proton-tsc'
    // ...
    @action('act')
    doAction(): void {
      const txid = getTransactionId();
      /* txid is 9bf0f9c2d2acb17eb18af416fda425f69f1091ec47e96370ea77f6f7f92814bb */
    }
    

# SafeMath

This is an utility class with a set of static methods to perform mathematical operations without overflow.

# add

  • static add(x: u64, y: u64): u64
    

    Returns the result of adding one u64 number to another

    Throws if:

    • If the result overflows the u64 type

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.add(<u64>4398046836870, <u64>4398046836871);
    // Result: 8796093673741
    
    const b = SafeMath.add(<u64>18446744073709551615, <u64>1);
    // Error: SafeMath Add Overflow
    

# sub

  • static sub(x: u64, y: u64): u64
    

    Returns the result of substracting y from x

    Throws if:

    • If the result is less than zero

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.sub(<u64>4398046836871, <u64>4398046836870);
    // Result: 1
    
    const b = SafeMath.add(<u64>4398046836870, <u64>4398046836871);
    // Error: SafeMath Sub Overflow
    

# mul

  • static mul(x: u64, y: u64): u128
    

    Returns the result of multiplication x by y

    Throws if:

    • If the division of the result to y is not equal to x

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.mul(<u64>18446744073709551615, <u64>18446744073709551615);
    // result is 40282366920938463463374607431768211455
    

# div

  • static div(x: u64, y: u64): u64
    

    Returns the result of division x to y

    Throws if:

    • If y is equal to zero

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.div(<u64>4398046836870, <u64>4);
    // result: 1099511709217
    
    const a = SafeMath.div(<u64>4398046836870, <u64>0);
    // error: SafeMath Div Overflow