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迁移
- 更改所有导入
- 删除迁移依赖性,从djblockchain到djtezos.0001_initial
- 在生产环境中执行以下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的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b03cd77a41f919880d0d08e1027662cb8c7978644e7c31c4c6cd428744b340b0 |
|
MD5 | b2514a9671970dd8b2ce0e06acbae274 |
|
BLAKE2b-256 | 869952ebaef388f498c3d707e636c7ccdcf89d564568b9825e72c39784f06033 |