小编egi*_*lhh的帖子

Cardano (ada) 的私钥和签名密钥是什么?

我正在尝试使用 nodejs 和 @emurgo/cardano-serialization-lib-nodejs lib (CardanoWasm) 生成地址并创建事务。按照文档我正在尝试这个:

const rootkey = CardanoWasm.Bip32PrivateKey.from_bip39_entropy(
  Buffer.from(someEntropy, 'hex'), // entropy is generated from mnemonic
  Buffer.from('')
);

const account = rootkey
  .derive(harden(1852)) // harden is a function returning 0x80000000+arg
  .derive(harden(1815))
  .derive(harden(0));

const utxokey = account
  .derive(0)
  .derive(0)
  .to_public();

const stake1 = account
  .derive(2)
  .derive(0)
  .to_public();

const address = CardanoWasm.BaseAddress.new(
   CardanoWasm.NetworkInfo.mainnet().network_id(),
   CardanoWasm.StakeCredential.from_keyhash(utxokey.to_raw_key().hash()),
   CardanoWasm.StakeCredential.from_keyhash(stakekey.to_raw_key().hash())
);

const addressBech32 = address.to_address().to_bech32();
Run Code Online (Sandbox Code Playgroud)

因此,在我的示例中,addressBech32 是钱包的实际公共地址。当我通过助记符将钱包导入到guarda(例如)时,它工作正常。但究竟什么是 rootkey 和 account?在我的示例中,私钥和签名密钥是什么?我应该使用什么密钥来签署交易以及如何使用 Cardano wasm 获取该密钥?我应该使用什么私钥来导入钱包(如果我出于某种原因不想使用助记符)?

cryptography node.js cardano

6
推荐指数
1
解决办法
762
查看次数

简单的ada程序使用get_line()和put_line()产生错误的空行

我在一个较大的程序中一直遇到这个问题,所以我制作了一个新的ada程序来对其进行测试,结果也是如此。

我有一个文本文件(Unix行尾):

000_1000_0010_1001
100_0000_0010_1001
100_1000_0000_1001
100_1000_0010_0001
100_1000_0010_1001
000_0000_0011_0011
100_1000_0100
000_0000_0110
111_1111_1111
011_1111_1111
000_0000_0110
Run Code Online (Sandbox Code Playgroud)

我要使用的方法很简单,将每行放入一个字符串中,然后直接将其打印出来。

这是我的代码:

000_1000_0010_1001
100_0000_0010_1001
100_1000_0000_1001
100_1000_0010_0001
100_1000_0010_1001
000_0000_0011_0011
100_1000_0100
000_0000_0110
111_1111_1111
011_1111_1111
000_0000_0110
Run Code Online (Sandbox Code Playgroud)

容易吧?它使用get_line接收每一行,将其保存到“ input”变量中,然后打印出所读取的任何量(使用get_line()返回的长度)。

不幸的是,当我运行以下代码时,我得到了一堆空白行:

gnatmake read read.adb
read < input.txt
Run Code Online (Sandbox Code Playgroud)
000_1000_0010_1001

100_0000_0010_1001

100_1000_0000_1001

100_1000_0010_0001

100_1000_0010_1001

000_0000_0011_0011

100_1000_0100
000_0000_0110
111_1111_1111
011_1111_1111
000_0000_0110

Run Code Online (Sandbox Code Playgroud)

我仔细检查了一下,确保我的输入文件中没有任何怪异的行尾字符或类似的字符(我只是在vim中输入了它们)。

这弄乱了我的程序,因为我必须考虑这些错误的空行。

知道我在做什么错吗?

stdin ada

3
推荐指数
1
解决办法
74
查看次数

Ada 中的普通整数和别名整数有什么区别?

我仍然对 avar : Integer;和之间的区别感到困惑var : aliased Integer;。根据 wikibooks,“如果你想访问任何变量,你需要告诉编译器该变量需要在内存中并且不能驻留在寄存器中”。寄存器内存不也是吗?所以一直困扰我的真正问题是存储在哪里var : Integer;以及var : aliased Integer;存储在哪里。

types ada

3
推荐指数
1
解决办法
100
查看次数

Ada语句'accept start do'中的任务没有完成所有执行?

Ada'accept start do'中的任务是否未完成其所有执行?

接受开始做

这里'do'关键字强制编译器完成do和end关键字之间的所有执行提及但为什么在下面的代码中它不会发生?为什么它打印其他任务主体即第一个(任务名称)而不是它自己的任务(即启动)下面的代码?请帮我理解我哪里出错了?

procedure main is
   task first is
      entry start;
   end first;

   task body first is
   begin
      accept start ;   -- i am not using do here

      put_line("first");
      put_line("first");
      put_line("first");
   end first;

   task second is
      entry start;
   end second;

   task body second is
   begin
      accept start do -- here 'do' keyword will force compile to finish all the execution between keyword 'do' and end? but why it is mixing statement of task first? 
         for i in 1..10 …
Run Code Online (Sandbox Code Playgroud)

ada task

2
推荐指数
1
解决办法
154
查看次数

-gnatyo实际执行什么样式检查?

手册内容如下:

检查子程序主体的顺序。如果字母-在出现在-gnaty之后的字符串中,则给定范围内的所有子程序主体(例如,程序包主体)必须按字母顺序排列。排序规则使用普通的Ada规则比较字符串,而忽略字母的大小写,除非存在尾随的数字后缀,然后在排序中使用此后缀的值(例如Junk2在Junk10之前)。

我认为,Junk2未来的Junk10是一个奇怪的,否则执法作风的实际灵感。但是实际触发它的一些代码示例是什么?我无法使用此选项来抱怨函数定义或任务主体混乱。例如,使用编译以下内容时,我没有任何抱怨gnat make -gnatyo

procedure Disordered is
   function Test return Natural;
   function Zest return Natural;

   --  disordered function bodies
   function Zest return Natural is (1);
   function Test return Natural is (2);
begin
   null;
end Disordered;
Run Code Online (Sandbox Code Playgroud)

ada gnat

2
推荐指数
1
解决办法
87
查看次数

将无界字符串转换为整数Ada

我的问题很简单,就像谷歌让我失望一样.如何将无界字符串转换为整数?

如果字符串有界,我可以这样做: I : Integer := Integer'Value("613");

但是,我的字符串无限制,Ada抛出此错误:

expected type "Standard.String" found private type "Ada.Strings.Unbounded.Unbounded_String"

我想做什么?

string ada

1
推荐指数
1
解决办法
2598
查看次数

Ada类型声明语义

我在大学读Ada.今天我的教授向我们提出了一个问题.在下面的代码中有三种类型声明.第三个没有编译错误'缺少新'.

我假设'Type'关键字让编译器知道我们要定义一个存储类,所以我的问题是:

声明之间的语义差异是什么?
如果省略关键字Integer,Ada会在指定范围时采用通用整数类型吗?这似乎是一个明显而合乎逻辑的结果.此外,当关键字'Integer'在'range'之前是新的然后是必需的?

我希望这不是模棱两可的,我做了一些研究,但似乎无法找到一个确切的答案,或者我可能与Ada的新手很多,以了解我发现了什么.我真的很想了解下面发生的事情.

with Ada.Text_IO; use ada.Text_IO;
    procedure any is
    type abc is new Integer range 1..10;
    num : abc;
    type def is range 1..10;
    num2 : def;
    type xyz is Integer range 1..10;
    num3 : xyz;
      begin
      num := 5;
      num2 := 6;
      num3 := 7;
 end any;
Run Code Online (Sandbox Code Playgroud)

types compiler-errors declaration ada subtype

1
推荐指数
1
解决办法
275
查看次数

如何在Ada中的嵌套聚合中分配记录

我试图初始化一个记录变量,它本身包含一个使用聚合的嵌套记录,但似乎无法使语法正确.任何帮助赞赏.

with Step; use Step;

package Pattern is   

   -- ADT
   type Pattern_Type is tagged private;

   -- ADT components
  type Bars_Type is private; 

  -- ADT instance methods
  function Tempo (This: Pattern_Type) return Integer;       
  function Bars (This: Pattern_Type)  return Bars_Type;    
  function Get_Next_Step(This: Pattern_Type ) return Step_Type;   

  -- Static methods
  function Get_Basic_Beat return Pattern_Type;

private

  type Bars_Type is range 0..2;                  
  Number_Of_Steps : constant Natural := 32;

  type Active_Step_Type is mod Number_Of_Steps;   
  type Steps_Type is array( Active_Step_Type ) of Step_Type;


  type Pattern_Type is tagged …
Run Code Online (Sandbox Code Playgroud)

ada

1
推荐指数
1
解决办法
174
查看次数

泛型类型X是(&lt;&gt;); 意思?

正是标题所要求的。我正在浏览一些Ada代码并遇到

generic type X is (<>);
Run Code Online (Sandbox Code Playgroud)

这是什么意思?它类似于C ++模板参数吗?

ada

1
推荐指数
1
解决办法
81
查看次数

“用于XXX使用”子句是否对空记录有意义?

我已经为所有记录类型添加了表示形式(rep)子句,这些子句将通过消息发送到另一个处理器。它是不同的CPU制造商,编译器和编程语言,因此存在未对齐/错误解释的危险。

显然,对于每个字段都type XXX is record需要for XXX use具有适当的字节和位数据。

type null_record is null record;

for null_record use
   null;
end record;
Run Code Online (Sandbox Code Playgroud)

不会编译,而且似乎没有任何意义。

老板正在推动100%代表条款,有'size'alignment 'Object_sizeValue_sizepragma pack,但肯定是没有意义的空记录?

ada

1
推荐指数
1
解决办法
56
查看次数