<origins> element

The origins element can be a root element to define the contract a token uses, but can also be inside attributes to get the source of an attribute, like through an ethereum call.

The origins element is usually used at two occasions: First, at the beginnung of a TokenScript to define the underlying smart contract, like DAI. Second, to get the value of an Attribute.

Code examples

Defining the underlying Smart Contract
<ts:origins>
     <ts:ethereum contract="DAI"/>
</ts:origins>
Get an attribute value from a user entry
<ts:attribute name="amount">
    <ts:type>
        <ts:syntax>1.3.6.1.4.1.1466.115.121.1.36</ts:syntax>
    </ts:type>
        <ts:label>
            <ts:string xml:lang="en">Amount in DAI</ts:string>
                <ts:string xml:lang="zh">代幣金額</ts:string>
          </ts:label>
        <ts:origins>
                  <ts:user-entry as="e18"/>
        </ts:origins>
</ts:attribute>
Get an attribute value from an Ethereum call
<ts:attribute name="emailRecord">
    <ts:type>
        <ts:syntax>1.3.6.1.4.1.1466.115.121.1.15</ts:syntax>
    </ts:type>
        <ts:origins>
              <ethereum:call as="utf8" contract="PublicResolver" function="text">
               <ts:data>
                          <ts:bytes32 local-ref="nodeHash"/>
                          <ts:string>email</ts:string>
                    </ts:data>
              </ethereum:call>
        </ts:origins>
</ts:attribute>