Skip to content
On this page

Mutez โ€‹

The type of amounts in SmartPy is sp.TMutez.

The corresponding type in Michelson is

Michelson mutez.

Literals โ€‹

sp.tez(<natural number>), sp.mutez(<natural number>)
Introduce a mutez.

Example โ€‹

# Two identical amounts (one tez):

Global properties โ€‹

Get transferred amount โ€‹

The amount of the current transaction, which is of type sp.TMutez.

Example โ€‹

amount = sp.amount
Michelson AMOUNT

Get contract balance โ€‹

The balance of the current contract.
Due to the not intuitive semantics in Michelson, we suggest that developers do not rely on balance too much.

See Tezos Agora Post.
In tests, a contract's balance is accessible through the <contract>.balance field.

Example โ€‹

balance = sp.balance
Michelson BALANCE

Operations โ€‹

Addition โ€‹

expr1 + expr2
Add two values of type sp.TMutez, expr1 and expr2.

Example โ€‹

result = sp.mutez(10) + sp.tez(1) # 1000010 of type sp.TMutez
Michelson ADD

Subtraction โ€‹

expr1 - expr2
Subtract two values of type sp.TMutez, expr1 and expr2.
This operation fails if the result is negative.

Example โ€‹

result = sp.mutez(20) - sp.mutez(10) # 10 of type sp.TMutez

sp.sub_mutez(expr1, expr2)
Subtract two values of type sp.TMutez, expr1 and expr2.
Returns a sp.TOption(sp.TMutez). This operation doesn't fail.

sp.sub_mutez(a, b)ย == sp.some(a-b) when a-b is a non negative and sp.none otherwise.

Example โ€‹

result = sp.sub_mutez(sp.mutez(20) - sp.mutez(10)) # sp.some(sp.mutez(10))
result2 = sp.sub_mutez(sp.mutez(10) - sp.mutez(20)) # sp.none
Michelson SUB

Multiplication โ€‹

sp.mul(<expr1>,ย <expr2>)
Multiply a sp.TMutez with a sp.TNat and produce a sp.TMutez.

Example โ€‹

value = sp.mul(sp.nat(2), sp.mutez(2)) # 4 of type sp.TMutez

Division โ€‹

sp.ediv(expr1, expr2)
Perform euclidean division, where expr1 is the dividend, and expr2 is the divisor.

Example โ€‹

(quotient, remainder) = sp.match_pair(sp.ediv(sp.tez(11), sp.tez(2)).open_some())
Michelson EDIV

Split tokens โ€‹

sp.split_tokens(amount, quantity, totalQuantity)
Compute amount * quantity / totalQuantity where amount is of type sp.TMutez, quantity and totalQuantity are of type sp.TNat.

Example โ€‹

sp.split_tokens(sp.mutez(100), 1, 10) # 10 mutez