GAUSSDB-防篡改账本

举报
yd_294088545 发表于 2026/01/12 22:08:19 2026/01/12
【摘要】 背景信息账本数据库融合了区块链思想,将用户操作记录至两种历史表:用户历史表和全局区块表中。当用户创建防篡改用户表时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息,同时在blockchain模式下会创建一张用户历史表来记录对应用户表中每条数据的变更行为;而用户对防篡改用户表的每一次修改行为将被记录到全局区块表中。由于历史表具有只可追加不可修改的特点,因此历史表记录串联起...

背景信息

账本数据库融合了区块链思想,将用户操作记录至两种历史表:用户历史表和全局区块表中。当用户创建防篡改用户表时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息,同时在blockchain模式下会创建一张用户历史表来记录对应用户表中每条数据的变更行为;而用户对防篡改用户表的每一次修改行为将被记录到全局区块表中。由于历史表具有只可追加不可修改的特点,因此历史表记录串联起来便形成了用户对防篡改用户表的修改历史。

表命名和结构

用户历史表blockchain.<​schemaname>_<​tablename>_hist所包含的字段

注意事项

如果需要创建防篡改模式或更改普通模式为防篡改模式,则需设置enable_ledger参数为on。enable_ledger默认参数为off。

示例

创建防篡改模式ledgernsp
create schema ledgernsp with blockchain;

创建防篡改用户表ledgernsp.usertable(id int, name text),并插入3条数据
CREATE TABLE ledgernsp.usertable(id int, name text);
INSERT INTO ledgernsp.usertable VALUES(1,'alex'),(2,'bob'),(3,'tom');

校验指定防篡改用户表的表级数据hash值与其对应历史表hash一致性
select * from ledger_hist_check('ledgernsp','usertable');

校验指定防篡改用户表对应的历史表hash与全局历史表对应的relhash一致性
select * from ledger_gchain_check('ledgernsp','usertable');

查看记录用户对防篡改用户表修改操作信息
select * from gs_global_chain;

查看账本历史操作记录
SELECT * FROM blockchain.ledgernsp_usertable_hist;

扩展部分
防篡改用户表操作1、
INSERT INTO ledgernsp.usertable VALUES(4,'alex'),(5,'bob'),(6,'tom');
select * from gs_global_chain;
SELECT * FROM blockchain.ledgernsp_usertable_hist;

防篡改用户表操作2、
update ledgernsp.usertable set name='oye' where id=4;
select * from gs_global_chain;
SELECT * FROM blockchain.ledgernsp_usertable_hist;

防篡改用户表操作3、
delete from ledgernsp.usertable where id=4;
select * from gs_global_chain;
SELECT * FROM blockchain.ledgernsp_usertable_hist;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。