在这个简化的土地NFT中, properties 有"平均温度"、“面积”、"石油"、“金矿”几个属性。现在这个 NFT 看起来像这样:

{
    issuer: "0x21a31ee1afc51d94c2efccaa2092ad1028285549",
    id: "8747",
    metadata: "ipfs://XXX",
    protocol: 'land_1_1',
    vest: '',
    owner: '0x21a31ee1afc51d94c2efccaa2092ad1028285549',
    properties: [
        {
            name: 'gold',
            value: 12234555,
            slot: []
        },
        {
            name: 'temperature',
            value: 21,
            slot: []
        },
        {
            name: 'area',
            value: 21672233,
            slot: []
        },
        {
            name: 'Oilfield',
            value: 21134,
            slot: []
        },
    ],
}

其中在铸造合约中规定了 properties 的可变性:

{
    "properties": [
        {
            "name": "gold",
            "data": 0,
            "rule": {
                "variable": "consume",
                "slot": {}
            }
        },
        {
            "name": "temperature",
            "data": 0,
            "rule": {
                "variable": "protocol",
                "slot": {}
            }
        },
        {
            "name": "area",
            "data": 0,
            "rule": {
                "variable": "conserves",
                "slot": {}
            }
        },
        {
            "name": "Oilfield",
            "data": 0,
            "rule": {
                "variable": "consume",
                "slot": {}
            }
        }
    ]
}

其中,规定了gold 金矿储藏量是消耗性的,即该数值只可减少而不可增加;土地的面积是恒定的,这意味着该土地的所有人无法修改其面积,除非获得另一块土地将其合并进来,土地的面积相应增加;气温的属性值交由协议控制,当协议层不存在时,值不可变,土地协议land_1_1 将复杂数据的交互逻辑;是有的储藏量与金矿相同,是消耗性的。

如果我们将一个属性的可变性设置为恒定时,实际上是是一种 FT。自此,土地之间具备了互操作性,插槽又赋予其原子性。

土地兼并

当土地的所有权人调用合并时,land_1_1 将发挥作用,将两块土地的金矿和石油储藏量、面积相加,通过新的面积来重新计算平均气温。土地的发行合约会在land_1_1 发挥作用后再次检查数据的合法性。

当一个土地 NFT 兼并的土地越多时,面积和资源不断增加,直至形成一个类似国家的概念,于是我们可以开始通过 NFT 之间的互操作性模拟文明。

文明模拟

开采金矿

第三方或土地本身可以锚定金矿发行 Token ,发行 1 个 token 需要消耗特定的金矿储藏量,可以称其为金币。任何土地的所有权人都可以减少自己的金矿,获得相应的金币,这就形成了金矿的开采和货币。

土地发行方应该在合约中设置了铸造规则,土地的总量和金矿储藏量是有上限的,但用户随意地出售金矿,金币的供应量并不稳定,久而久之用户对其认可度并不是很高。于是,引入了开采矿机,用户可将其添加进插槽中。现在这个土地 NFT 看起来像这样:

{
    issuer: "0x21a31ee1afc51d94c2efccaa2092ad1028285549",
    id: "8747",
    metadata: "ipfs://XXX",
    protocol: 'land_1_1',
    vest: '',
    owner: '0x21a31ee1afc51d94c2efccaa2092ad1028285549',
    properties: [
        {
            name: 'gold',
            value: 12234555,
            slot: [
                {
                    name: "mining_machines",
                    issuer: "0x654a5sddd94c2efccaa2092ad1028285549",
                    protocol: 'mining_machines_1',
                    metadata: "ipfs://XXX",
                    properties: [
                        {
                            name: 'fuel_consumption',
                            value: 12333,
                            slot: []
                        },
                        {
                            name: 'power',
                            value: 142,
                            slot: []
                        },
                        {
                            name: 'fuel_consumption',
                            value: 12333,
                            slot: []
                        },
                    ]
                }
            ]
        },
        {
            name: 'temperature',
            value: 21,
            slot: []
        },
        {
            name: 'area',
            value: 21672233,
            slot: []
        },
        {
            name: 'Oilfield',
            value: 21134,
            slot: []
        },
    ],
}

开采石油

矿机的具有油耗、功率、故障率等属性,功率和故障率决定了在一定区块时间内的开采量。矿机的油耗决定了开采单位的金矿需要消耗的石油,现在我们需要另一个合约来处理这些信息,NFT 可选择指向该合约,使得合约可以控制 NFT 内的所有资源,或者 owner 将该合约加入其控制器中,以提高安全性,这两种做法各有利弊,这取决于具体的交互逻辑。

贸易

当然,并不是所有土地都拥有是有资源,当一个缺乏石油的国家需要开采金矿时,他们需要向其他国家购买,或者使用其他资源置换,他们之间的交易方式多种多样,于是国家之间诞生了贸易。

资源枯竭

最终,我们可以在有限的时间内看到元宇宙的一个文明如何处理资源枯竭的情况。