跳转到主要内容

Django-Tezos

项目描述

dgTezos: Django-Tezos

Django-Tezos提供Django模型和uWSGI Spooler(djCall)与PyTezos的集成。

安装djTezos

使用pip安装djtezos,然后将其添加到INSTALLED_APPS。

运行./manage.py migrate以创建djtezos模型的表。

您需要一个足够长的SECRET_KEY来支持AES。

添加区块链

区块链是您必须管理的第一个模型,您可以在管理界面中完成此操作。对于任何区块链,您可以选择Python提供者类,例如djtezos.tezos.Provider或用于测试的模拟的djtezos.fake.Provider

示例

tzlocal = Blockchain.objects.create(
    name='tzlocal',
    endpoint='http://tz:8732',
    provider_class='djtezos.tezos.Provider',
    is_active=True,
    confirmation_blocks=1,
)

运行tzlocal: docker run --name tz --rm --publish 8732:8732 yourlabs/tezos

添加到/etc/hosts: tz 在以127.0.0.1开始的行中

在gitlab-ci中添加

services:
- name: yourlabs/tezos
  alias: tz

创建账户

为用户创建账户

account = user.account_set.create(blockchain=tzlocal)
account.generate_private_key()
account.save()

用户可以有任意多的账户。

队列

事务以Transaction模型在数据库中排队。您可以使用3种类型的事务。

部署智能合约

使用contract_micheline创建事务以部署智能合约

    contract = Transaction.objects.create(
        sender=account,
        name='TICKR',
        contract_micheline=mich,
        contract_name='PyMich FA 1.2',
        args={'int': '1'},
        state='deploy',
    )

您可以通过Transaction模型和Contract代理模型检索它。

调用智能合约函数

使用新事务调用智能合约函数

    call = Transaction.objects.create(
        sender=account,
        contract=contract,
        function='replace',
        args=[3],
        state='deploy',
    )

这将仅用一个整数字符3调用replace函数。

还有可用的Call代理模型。

执行转账

在区块链上创建转账

    transfer = Transaction.objects.create(
        sender=account,
        receiver=account2,
        amount=10000,
        state='deploy',
    )

从v0.4.x迁移

回调已在发布候选版本中重写,您需要

  • 调用 Account.generate_private_key() Account.save() 来能够使用它,或者通过在models.py中定义的AES加密自行配置私钥
  • 重复运行: ./manage.py djtezos_sync,最初会赶上积压,然后增量同步,支持reorg
  • 重复间隔运行:./manage.py djtezos_balance

此外,您不能在未填写的情况下使用表单显示发送字段。

从djblockchain迁移

  1. 更改所有导入
  2. 删除迁移依赖性,从djblockchain到djtezos.0001_initial
  3. 在生产环境中执行以下SQL
alter table djblockchain_account rename to djtezos_account;
alter table djblockchain_blockchain rename to djtezos_blockchain;
alter table djblockchain_transaction rename to djtezos_transaction;
alter table djtezos_transaction drop column block_id;
drop table djblockchain_block;
alter table djtezos_transaction add column contract_micheline json null;
alter table djtezos_transaction add column amount int null;
insert into django_migrations (app, name, applied) values ('djtezos', '0001_initial', now());
update djtezos_blockchain set provider_class = replace(provider_class, 'djblockchain', 'djtezos');

然后,您可能仍然有使用以太坊提供者的区块链对象,这尚未从djblockchain迁移,您可以通过将is_active设置为False来禁用它们,或者您可以直接删除它们,但这将级联删除所有相关交易,这可能与现有用户对您平台上的期望不符...

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

djtezos-0.5.2.tar.gz (22.6 kB 查看哈希)

上传时间:

由以下机构支持